annotate Plugins/Input/aac/libmp4v2/mp4file.h @ 199:0a2ad94e8607 trunk

[svn] Synced with bmp-mp4. Build system is fragile, but should work now.
author chainsaw
date Wed, 16 Nov 2005 16:21:11 -0800
parents fa848bd484d8
children f2dc045d2327
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
2 * The contents of this file are subject to the Mozilla Public
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3 * License Version 1.1 (the "License"); you may not use this file
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
4 * except in compliance with the License. You may obtain a copy of
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
5 * the License at http://www.mozilla.org/MPL/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
6 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
7 * Software distributed under the License is distributed on an "AS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9 * implied. See the License for the specific language governing
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10 * rights and limitations under the License.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
11 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12 * The Original Code is MPEG4IP.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
13 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14 * The Initial Developer of the Original Code is Cisco Systems Inc.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15 * Portions created by Cisco Systems Inc. are
199
0a2ad94e8607 [svn] Synced with bmp-mp4. Build system is fragile, but should work now.
chainsaw
parents: 61
diff changeset
16 * Copyright (C) Cisco Systems Inc. 2001 - 2004. All Rights Reserved.
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 * 3GPP features implementation is based on 3GPP's TS26.234-v5.60,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
19 * and was contributed by Ximpo Group Ltd.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
20 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21 * Portions created by Ximpo Group Ltd. are
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
22 * Copyright (C) Ximpo Group Ltd. 2003, 2004. All Rights Reserved.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24 * Contributor(s):
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 * Dave Mackie dmackie@cisco.com
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 * Alix Marchandise-Franquet alix@cisco.com
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 * Ximpo Group Ltd. mp4v2@ximpo.com
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 #ifndef __MP4_FILE_INCLUDED__
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31 #define __MP4_FILE_INCLUDED__
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 // forward declarations
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34 class MP4Atom;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 class MP4Property;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 class MP4Float32Property;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37 class MP4StringProperty;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38 class MP4BytesProperty;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 class MP4Descriptor;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40 class MP4DescriptorProperty;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 class MP4File {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43 public: /* equivalent to MP4 library API */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 MP4File(u_int32_t verbosity = 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45 ~MP4File();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47 /* file operations */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48 void Read(const char* fileName);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49 void Create(const char* fileName, u_int32_t flags,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
50 int add_ftyp = 1, int add_iods = 1,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51 char* majorBrand = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
52 u_int32_t minorVersion = 0, char** supportedBrands = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53 u_int32_t supportedBrandsCount = 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
54 void Modify(const char* fileName);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
55 void Optimize(const char* orgFileName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
56 const char* newFileName = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57 void Dump(FILE* pDumpFile = NULL, bool dumpImplicits = false);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58 void Close();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
59
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60 /* library property per file */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 u_int32_t GetVerbosity() {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63 return m_verbosity;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65 void SetVerbosity(u_int32_t verbosity) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66 m_verbosity = verbosity;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69 bool Use64Bits(const char *atomName);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71 /* file properties */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73 u_int64_t GetIntegerProperty(const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 float GetFloatProperty(const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 const char* GetStringProperty(const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76 void GetBytesProperty(const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 u_int8_t** ppValue, u_int32_t* pValueSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79 void SetIntegerProperty(const char* name, u_int64_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80 void SetFloatProperty(const char* name, float value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 void SetStringProperty(const char* name, const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82 void SetBytesProperty(const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83 const u_int8_t* pValue, u_int32_t valueSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85 // file level convenience functions
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87 MP4Duration GetDuration();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 void SetDuration(MP4Duration value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 u_int32_t GetTimeScale();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91 void SetTimeScale(u_int32_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 u_int8_t GetODProfileLevel();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94 void SetODProfileLevel(u_int8_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96 u_int8_t GetSceneProfileLevel();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97 void SetSceneProfileLevel(u_int8_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99 u_int8_t GetVideoProfileLevel();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 void SetVideoProfileLevel(u_int8_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 u_int8_t GetAudioProfileLevel();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103 void SetAudioProfileLevel(u_int8_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105 u_int8_t GetGraphicsProfileLevel();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106 void SetGraphicsProfileLevel(u_int8_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108 const char* GetSessionSdp();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109 void SetSessionSdp(const char* sdpString);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110 void AppendSessionSdp(const char* sdpString);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112 /* track operations */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 MP4TrackId AddTrack(const char* type, u_int32_t timeScale = 1000);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115 void DeleteTrack(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117 u_int32_t GetNumberOfTracks(const char* type = NULL, u_int8_t subType = 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119 MP4TrackId AllocTrackId();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120 MP4TrackId FindTrackId(u_int16_t trackIndex,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 const char* type = NULL, u_int8_t subType = 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122 u_int16_t FindTrackIndex(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 u_int16_t FindTrakAtomIndex(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125 /* track properties */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127 u_int64_t GetTrackIntegerProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 MP4TrackId trackId, const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 float GetTrackFloatProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 MP4TrackId trackId, const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131 const char* GetTrackStringProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 MP4TrackId trackId, const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 void GetTrackBytesProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 MP4TrackId trackId, const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135 u_int8_t** ppValue, u_int32_t* pValueSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
136
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
137 void SetTrackIntegerProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
138 MP4TrackId trackId, const char* name, int64_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139 void SetTrackFloatProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140 MP4TrackId trackId, const char* name, float value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 void SetTrackStringProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
142 MP4TrackId trackId, const char* name, const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
143 void SetTrackBytesProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 MP4TrackId trackId, const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 const u_int8_t* pValue, u_int32_t valueSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147 /* sample operations */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149 u_int32_t GetSampleSize(MP4TrackId trackId, MP4SampleId sampleId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 u_int32_t GetTrackMaxSampleSize(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 MP4SampleId GetSampleIdFromTime(MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 MP4Timestamp when, bool wantSyncSample = false);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156 MP4Timestamp GetSampleTime(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 MP4TrackId trackId, MP4SampleId sampleId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 MP4Duration GetSampleDuration(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
160 MP4TrackId trackId, MP4SampleId sampleId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
161
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162 MP4Duration GetSampleRenderingOffset(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 MP4TrackId trackId, MP4SampleId sampleId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165 bool GetSampleSync(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166 MP4TrackId trackId, MP4SampleId sampleId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168 void ReadSample(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 // input parameters
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171 MP4SampleId sampleId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172 // output parameters
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173 u_int8_t** ppBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
174 u_int32_t* pNumBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
175 MP4Timestamp* pStartTime = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
176 MP4Duration* pDuration = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
177 MP4Duration* pRenderingOffset = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
178 bool* pIsSyncSample = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
179
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
180 void WriteSample(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
181 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
182 const u_int8_t* pBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
183 u_int32_t numBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
184 MP4Duration duration = 0,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
185 MP4Duration renderingOffset = 0,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
186 bool isSyncSample = true);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
187
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
188 void SetSampleRenderingOffset(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
189 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
190 MP4SampleId sampleId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
191 MP4Duration renderingOffset);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
192
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
193 /* track level convenience functions */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195 MP4TrackId AddSystemsTrack(const char* type);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 MP4TrackId AddODTrack();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
198
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 MP4TrackId AddSceneTrack();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
201 MP4TrackId AddAudioTrack(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202 u_int32_t timeScale,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203 MP4Duration sampleDuration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
204 u_int8_t audioType);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206 MP4TrackId AddEncAudioTrack( // ismacryp
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207 u_int32_t timeScale,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208 MP4Duration sampleDuration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209 u_int8_t audioType,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210 u_int32_t scheme_type,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211 u_int16_t scheme_version,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
212 u_int8_t key_ind_len,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
213 u_int8_t iv_len,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
214 bool selective_enc,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
215 char *kms_uri);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
216
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
217 void SetAmrVendor(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
218 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
219 u_int32_t vendor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
220
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
221 void SetAmrDecoderVersion(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
222 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
223 u_int8_t decoderVersion);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
224
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
225 void SetAmrModeSet(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
226 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
227 u_int16_t modeSet);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
228 uint16_t GetAmrModeSet(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
229
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
230 MP4TrackId AddAmrAudioTrack(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
231 u_int32_t timeScale,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
232 u_int16_t modeSet,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
233 u_int8_t modeChangePeriod,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
234 u_int8_t framesPerSample,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
235 bool isAmrWB);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
236
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
237 MP4TrackId AddMP4VideoTrack(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
238 u_int32_t timeScale,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
239 MP4Duration sampleDuration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
240 u_int16_t width,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
241 u_int16_t height,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
242 u_int8_t videoType);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
243
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
244 MP4TrackId AddEncVideoTrack( // ismacryp
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
245 u_int32_t timeScale,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
246 MP4Duration sampleDuration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
247 u_int16_t width,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
248 u_int16_t height,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
249 u_int8_t videoType,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
250 u_int32_t scheme_type,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
251 u_int16_t scheme_version,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
252 u_int8_t key_ind_len,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
253 u_int8_t iv_len,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
254 bool selective_enc,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
255 char *kms_uri);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
256
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
257 void SetH263Vendor(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
258 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
259 u_int32_t vendor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
260
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
261 void SetH263DecoderVersion(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
262 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
263 u_int8_t decoderVersion);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
264
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
265 void SetH263Bitrates(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
266 MP4TrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
267 u_int32_t avgBitrate,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
268 u_int32_t maxBitrate);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
269
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
270 MP4TrackId AddH263VideoTrack(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
271 u_int32_t timeScale,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
272 MP4Duration sampleDuration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
273 u_int16_t width,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
274 u_int16_t height,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
275 u_int8_t h263Level,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
276 u_int8_t h263Profile,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
277 u_int32_t avgBitrate,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
278 u_int32_t maxBitrate);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
279 MP4TrackId AddH264VideoTrack(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
280 u_int32_t timeScale,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
281 MP4Duration sampleDuration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
282 u_int16_t width,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
283 u_int16_t height,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
284 uint8_t AVCProfileIndication,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
285 uint8_t profile_compat,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
286 uint8_t AVCLevelIndication,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
287 uint8_t sampleLenFieldSizeMinusOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
288 bool AddH264SequenceParameterSet(MP4TrackId trackId,
199
0a2ad94e8607 [svn] Synced with bmp-mp4. Build system is fragile, but should work now.
chainsaw
parents: 61
diff changeset
289 uint8_t *pSequence,
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
290 uint16_t sequenceLen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
291 bool AddH264PictureParameterSet(MP4TrackId trackId,
199
0a2ad94e8607 [svn] Synced with bmp-mp4. Build system is fragile, but should work now.
chainsaw
parents: 61
diff changeset
292 uint8_t *pPicture,
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
293 uint16_t pictureLen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
294 MP4TrackId AddHintTrack(MP4TrackId refTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
295
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
296 MP4SampleId GetTrackNumberOfSamples(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
297
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
298 const char* GetTrackType(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
299
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
300 const char *GetTrackMediaDataName(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
301 MP4Duration GetTrackDuration(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
302
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
303 u_int32_t GetTrackTimeScale(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
304 void SetTrackTimeScale(MP4TrackId trackId, u_int32_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
305
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
306 // replacement to GetTrackAudioType and GetTrackVideoType
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
307 u_int8_t GetTrackEsdsObjectTypeId(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
308
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
309 u_int8_t GetTrackAudioMpeg4Type(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
310
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
311 MP4Duration GetTrackFixedSampleDuration(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
312
199
0a2ad94e8607 [svn] Synced with bmp-mp4. Build system is fragile, but should work now.
chainsaw
parents: 61
diff changeset
313 float GetTrackVideoFrameRate(MP4TrackId trackId);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
314
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
315 int GetTrackAudioChannels(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
316 void GetTrackESConfiguration(MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
317 u_int8_t** ppConfig, u_int32_t* pConfigSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
318 void SetTrackESConfiguration(MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
319 const u_int8_t* pConfig, u_int32_t configSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
320
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
321 void GetTrackVideoMetadata(MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
322 u_int8_t** ppConfig, u_int32_t* pConfigSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
323 void GetTrackH264ProfileLevel(MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
324 uint8_t *pProfile,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
325 uint8_t *pLevel);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
326 bool GetTrackH264SeqPictHeaders(MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
327 uint8_t ***pSeqHeader,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
328 uint32_t **pSeqHeaderSize,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
329 uint8_t ***pPictHeader,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
330 uint32_t **pPictHeaderSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
331 void GetTrackH264LengthSize(MP4TrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
332 uint32_t *pLength);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
333 const char* GetHintTrackSdp(MP4TrackId hintTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
334 void SetHintTrackSdp(MP4TrackId hintTrackId, const char* sdpString);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
335 void AppendHintTrackSdp(MP4TrackId hintTrackId, const char* sdpString);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
336
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
337 // 3GPP specific functions
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
338 void MakeFtypAtom(char* majorBrand,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
339 u_int32_t minorVersion,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
340 char** supportedBrands,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
341 u_int32_t supportedBrandsCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
342 void Make3GPCompliant(const char* fileName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
343 char* majorBrand,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
344 u_int32_t minorVersion,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
345 char** supportedBrands,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
346 u_int32_t supportedBrandsCount,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
347 bool deleteIodsAtom);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
348
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
349 // ISMA specific functions
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
350
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
351 // true if media track encrypted according to ismacryp
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
352 bool IsIsmaCrypMediaTrack(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
353
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
354 void MakeIsmaCompliant(bool addIsmaComplianceSdp = true);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
355
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
356 void CreateIsmaIodFromParams(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
357 u_int8_t videoProfile,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
358 u_int32_t videoBitrate,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
359 u_int8_t* videoConfig,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
360 u_int32_t videoConfigLength,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
361 u_int8_t audioProfile,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
362 u_int32_t audioBitrate,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
363 u_int8_t* audioConfig,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
364 u_int32_t audioConfigLength,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
365 u_int8_t** ppBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
366 u_int64_t* pNumBytes);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
367
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
368 // time convenience functions
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
369
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
370 u_int64_t ConvertFromMovieDuration(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
371 MP4Duration duration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
372 u_int32_t timeScale);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
373
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
374 u_int64_t ConvertFromTrackTimestamp(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
375 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
376 MP4Timestamp timeStamp,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
377 u_int32_t timeScale);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
378
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
379 MP4Timestamp ConvertToTrackTimestamp(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
380 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
381 u_int64_t timeStamp,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
382 u_int32_t timeScale);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
383
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
384 u_int64_t ConvertFromTrackDuration(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
385 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
386 MP4Duration duration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
387 u_int32_t timeScale);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
388
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
389 MP4Duration ConvertToTrackDuration(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
390 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
391 u_int64_t duration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
392 u_int32_t timeScale);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
393
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
394 // specialized operations
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
395
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
396 void GetHintTrackRtpPayload(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
397 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
398 char** ppPayloadName = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
399 u_int8_t* pPayloadNumber = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
400 u_int16_t* pMaxPayloadSize = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
401 char **ppEncodingParams = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
402
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
403 void SetHintTrackRtpPayload(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
404 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
405 const char* payloadName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
406 u_int8_t* pPayloadNumber,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
407 u_int16_t maxPayloadSize,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
408 const char *encoding_params,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
409 bool include_rtp_map,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
410 bool include_mpeg4_esid);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
411
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
412 MP4TrackId GetHintTrackReferenceTrackId(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
413 MP4TrackId hintTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
414
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
415 void ReadRtpHint(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
416 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
417 MP4SampleId hintSampleId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
418 u_int16_t* pNumPackets = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
419
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
420 u_int16_t GetRtpHintNumberOfPackets(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
421 MP4TrackId hintTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
422
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
423 int8_t GetRtpPacketBFrame(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
424 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
425 u_int16_t packetIndex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
426
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
427 int32_t GetRtpPacketTransmitOffset(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
428 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
429 u_int16_t packetIndex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
430
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
431 void ReadRtpPacket(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
432 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
433 u_int16_t packetIndex,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
434 u_int8_t** ppBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
435 u_int32_t* pNumBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
436 u_int32_t ssrc = 0,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
437 bool includeHeader = true,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
438 bool includePayload = true);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
439
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
440 MP4Timestamp GetRtpTimestampStart(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
441 MP4TrackId hintTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
442
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
443 void SetRtpTimestampStart(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
444 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
445 MP4Timestamp rtpStart);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
446
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
447 void AddRtpHint(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
448 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
449 bool isBframe,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
450 u_int32_t timestampOffset);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
451
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
452 void AddRtpPacket(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
453 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
454 bool setMbit,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
455 int32_t transmitOffset);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
456
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
457 void AddRtpImmediateData(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
458 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
459 const u_int8_t* pBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
460 u_int32_t numBytes);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
461
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
462 void AddRtpSampleData(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
463 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
464 MP4SampleId sampleId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
465 u_int32_t dataOffset,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
466 u_int32_t dataLength);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
467
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
468 void AddRtpESConfigurationPacket(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
469 MP4TrackId hintTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
470
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
471 void WriteRtpHint(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
472 MP4TrackId hintTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
473 MP4Duration duration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
474 bool isSyncSample);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
475
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
476 u_int8_t AllocRtpPayloadNumber();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
477
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
478 // edit list related
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
479
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
480 char* MakeTrackEditName(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
481 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
482 MP4EditId editId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
483 const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
484
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
485 MP4EditId AddTrackEdit(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
486 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
487 MP4EditId editId = MP4_INVALID_EDIT_ID);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
488
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
489 void DeleteTrackEdit(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
490 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
491 MP4EditId editId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
492
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
493 u_int32_t GetTrackNumberOfEdits(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
494 MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
495
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
496 MP4Timestamp GetTrackEditStart(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
497 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
498 MP4EditId editId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
499
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
500 MP4Duration GetTrackEditTotalDuration(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
501 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
502 MP4EditId editId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
503
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
504 MP4Timestamp GetTrackEditMediaStart(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
505 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
506 MP4EditId editId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
507
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
508 void SetTrackEditMediaStart(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
509 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
510 MP4EditId editId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
511 MP4Timestamp startTime);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
512
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
513 MP4Duration GetTrackEditDuration(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
514 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
515 MP4EditId editId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
516
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
517 void SetTrackEditDuration(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
518 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
519 MP4EditId editId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
520 MP4Duration duration);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
521
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
522 bool GetTrackEditDwell(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
523 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
524 MP4EditId editId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
525
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
526 void SetTrackEditDwell(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
527 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
528 MP4EditId editId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
529 bool dwell);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
530
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
531 MP4SampleId GetSampleIdFromEditTime(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
532 MP4TrackId trackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
533 MP4Timestamp when,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
534 MP4Timestamp* pStartTime = NULL,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
535 MP4Duration* pDuration = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
536
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
537 /* iTunes metadata handling */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
538 bool CreateMetadataAtom(const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
539 bool MetadataDelete(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
540
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
541 /* set metadata */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
542 bool SetMetadataName(const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
543 bool SetMetadataWriter(const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
544 bool SetMetadataAlbum(const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
545 bool SetMetadataArtist(const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
546 bool SetMetadataTool(const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
547 bool SetMetadataComment(const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
548 bool SetMetadataYear(const char* value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
549 bool SetMetadataTrack(u_int16_t track, u_int16_t totalTracks);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
550 bool SetMetadataDisk(u_int16_t disk, u_int16_t totalDisks);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
551 bool SetMetadataGenre(const char *value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
552 bool SetMetadataTempo(u_int16_t tempo);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
553 bool SetMetadataCompilation(u_int8_t compilation);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
554 bool SetMetadataCoverArt(u_int8_t *coverArt, u_int32_t size);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
555 bool SetMetadataFreeForm(char *name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
556 u_int8_t* pValue,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
557 u_int32_t valueSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
558
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
559 /* get metadata */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
560 bool GetMetadataByIndex(u_int32_t index,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
561 const char** ppName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
562 u_int8_t** ppValue,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
563 u_int32_t* pValueSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
564 bool GetMetadataName(char** value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
565 bool GetMetadataWriter(char** value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
566 bool GetMetadataAlbum(char** value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
567 bool GetMetadataArtist(char** value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
568 bool GetMetadataTool(char** value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
569 bool GetMetadataComment(char** value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
570 bool GetMetadataYear(char** value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
571 bool GetMetadataTrack(u_int16_t* track, u_int16_t* totalTracks);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
572 bool GetMetadataDisk(u_int16_t* disk, u_int16_t* totalDisks);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
573 bool GetMetadataGenre(char **value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
574 bool GetMetadataTempo(u_int16_t* tempo);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
575 bool GetMetadataCompilation(u_int8_t* compilation);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
576 bool GetMetadataCoverArt(u_int8_t **coverArt, u_int32_t* size);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
577 bool GetMetadataFreeForm(char *name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
578 u_int8_t** pValue,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
579 u_int32_t* valueSize);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
580 /* end of MP4 API */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
581
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
582 /* "protected" interface to be used only by friends in library */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
583
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
584 u_int64_t GetPosition(FILE* pFile = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
585 void SetPosition(u_int64_t pos, FILE* pFile = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
586
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
587 u_int64_t GetSize();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
588
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
589 u_int32_t ReadBytes(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
590 u_int8_t* pBytes, u_int32_t numBytes, FILE* pFile = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
591 u_int64_t ReadUInt(u_int8_t size);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
592 u_int8_t ReadUInt8();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
593 u_int16_t ReadUInt16();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
594 u_int32_t ReadUInt24();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
595 u_int32_t ReadUInt32();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
596 u_int64_t ReadUInt64();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
597 float ReadFixed16();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
598 float ReadFixed32();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
599 float ReadFloat();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
600 char* ReadString();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
601 char* ReadCountedString(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
602 u_int8_t charSize = 1, bool allowExpandedCount = false);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
603 u_int64_t ReadBits(u_int8_t numBits);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
604 void FlushReadBits();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
605 u_int32_t ReadMpegLength();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
606
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
607 u_int32_t PeekBytes(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
608 u_int8_t* pBytes, u_int32_t numBytes, FILE* pFile = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
609
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
610 void WriteBytes(u_int8_t* pBytes, u_int32_t numBytes, FILE* pFile = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
611 void WriteUInt(u_int64_t value, u_int8_t size);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
612 void WriteUInt8(u_int8_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
613 void WriteUInt16(u_int16_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
614 void WriteUInt24(u_int32_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
615 void WriteUInt32(u_int32_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
616 void WriteUInt64(u_int64_t value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
617 void WriteFixed16(float value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
618 void WriteFixed32(float value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
619 void WriteFloat(float value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
620 void WriteString(char* string);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
621 void WriteCountedString(char* string,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
622 u_int8_t charSize = 1, bool allowExpandedCount = false);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
623 void WriteBits(u_int64_t bits, u_int8_t numBits);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
624 void PadWriteBits(u_int8_t pad = 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
625 void FlushWriteBits();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
626 void WriteMpegLength(u_int32_t value, bool compact = false);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
627
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
628 void EnableMemoryBuffer(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
629 u_int8_t* pBytes = NULL, u_int64_t numBytes = 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
630 void DisableMemoryBuffer(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
631 u_int8_t** ppBytes = NULL, u_int64_t* pNumBytes = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
632
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
633 char GetMode() {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
634 return m_mode;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
635 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
636
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
637 MP4Track* GetTrack(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
638
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
639 MP4Duration UpdateDuration(MP4Duration duration);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
640
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
641 MP4Atom* FindAtom(const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
642
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
643 MP4Atom* AddChildAtom(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
644 const char* parentName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
645 const char* childName);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
646
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
647 MP4Atom* AddChildAtom(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
648 MP4Atom* pParentAtom,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
649 const char* childName);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
650
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
651 MP4Atom* InsertChildAtom(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
652 const char* parentName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
653 const char* childName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
654 u_int32_t index);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
655
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
656 MP4Atom* InsertChildAtom(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
657 MP4Atom* pParentAtom,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
658 const char* childName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
659 u_int32_t index);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
660
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
661 MP4Atom* AddDescendantAtoms(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
662 const char* ancestorName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
663 const char* childName);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
664
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
665 MP4Atom* AddDescendantAtoms(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
666 MP4Atom* pAncestorAtom,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
667 const char* childName);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
668
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
669 protected:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
670 void Open(const char* fmode);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
671 void ReadFromFile();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
672 void GenerateTracks();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
673 void BeginWrite();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
674 void FinishWrite();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
675 void CacheProperties();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
676 void RewriteMdat(FILE* pReadFile, FILE* pWriteFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
677 bool ShallHaveIods();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
678
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
679 const char* TempFileName();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
680 void Rename(const char* existingFileName, const char* newFileName);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
681
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
682 void ProtectWriteOperation(char* where);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
683
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
684 void FindIntegerProperty(const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
685 MP4Property** ppProperty, u_int32_t* pIndex = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
686 void FindFloatProperty(const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
687 MP4Property** ppProperty, u_int32_t* pIndex = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
688 void FindStringProperty(const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
689 MP4Property** ppProperty, u_int32_t* pIndex = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
690 void FindBytesProperty(const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
691 MP4Property** ppProperty, u_int32_t* pIndex = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
692
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
693 bool FindProperty(const char* name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
694 MP4Property** ppProperty, u_int32_t* pIndex = NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
695
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
696 MP4TrackId AddVideoTrackDefault(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
697 u_int32_t timeScale,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
698 MP4Duration sampleDuration,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
699 u_int16_t width,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
700 u_int16_t height,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
701 const char *videoType);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
702 void AddTrackToIod(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
703
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
704 void RemoveTrackFromIod(MP4TrackId trackId, bool shallHaveIods = true);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
705
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
706 void AddTrackToOd(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
707
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
708 void RemoveTrackFromOd(MP4TrackId trackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
709
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
710 void GetTrackReferenceProperties(const char* trefName,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
711 MP4Property** ppCountProperty, MP4Property** ppTrackIdProperty);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
712
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
713 void AddTrackReference(const char* trefName, MP4TrackId refTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
714
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
715 u_int32_t FindTrackReference(const char* trefName, MP4TrackId refTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
716
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
717 void RemoveTrackReference(const char* trefName, MP4TrackId refTrackId);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
718
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
719 void AddDataReference(MP4TrackId trackId, const char* url);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
720
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
721 char* MakeTrackName(MP4TrackId trackId, const char* name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
722
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
723 u_int8_t ConvertTrackTypeToStreamType(const char* trackType);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
724
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
725 void CreateIsmaIodFromFile(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
726 MP4TrackId odTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
727 MP4TrackId sceneTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
728 MP4TrackId audioTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
729 MP4TrackId videoTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
730 u_int8_t** ppBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
731 u_int64_t* pNumBytes);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
732
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
733 MP4Descriptor* CreateESD(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
734 MP4DescriptorProperty* pEsProperty,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
735 u_int32_t esid,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
736 u_int8_t objectType,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
737 u_int8_t streamType,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
738 u_int32_t bufferSize,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
739 u_int32_t bitrate,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
740 const u_int8_t* pConfig,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
741 u_int32_t configLength,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
742 char* url);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
743
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
744 void CreateIsmaODUpdateCommandFromFileForFile(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
745 MP4TrackId odTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
746 MP4TrackId audioTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
747 MP4TrackId videoTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
748 u_int8_t** ppBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
749 u_int64_t* pNumBytes);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
750
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
751 void CreateIsmaODUpdateCommandFromFileForStream(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
752 MP4TrackId audioTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
753 MP4TrackId videoTrackId,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
754 u_int8_t** ppBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
755 u_int64_t* pNumBytes);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
756
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
757 void CreateIsmaODUpdateCommandForStream(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
758 MP4DescriptorProperty* pAudioEsdProperty,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
759 MP4DescriptorProperty* pVideoEsdProperty,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
760 u_int8_t** ppBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
761 u_int64_t* pNumBytes);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
762
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
763 void CreateIsmaSceneCommand(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
764 bool hasAudio,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
765 bool hasVideo,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
766 u_int8_t** ppBytes,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
767 u_int64_t* pNumBytes);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
768
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
769 protected:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
770 char* m_fileName;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
771 FILE* m_pFile;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
772 u_int64_t m_orgFileSize;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
773 u_int64_t m_fileSize;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
774 MP4Atom* m_pRootAtom;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
775 MP4Integer32Array m_trakIds;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
776 MP4TrackArray m_pTracks;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
777 MP4TrackId m_odTrackId;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
778 u_int32_t m_verbosity;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
779 char m_mode;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
780 u_int32_t m_createFlags;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
781 bool m_useIsma;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
782
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
783 // cached properties
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
784 MP4IntegerProperty* m_pModificationProperty;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
785 MP4Integer32Property* m_pTimeScaleProperty;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
786 MP4IntegerProperty* m_pDurationProperty;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
787
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
788 // read/write in memory
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
789 u_int8_t* m_memoryBuffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
790 u_int64_t m_memoryBufferPosition;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
791 u_int64_t m_memoryBufferSize;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
792
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
793 // bit read/write buffering
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
794 u_int8_t m_numReadBits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
795 u_int8_t m_bufReadBits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
796 u_int8_t m_numWriteBits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
797 u_int8_t m_bufWriteBits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
798
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
799 #ifndef _WIN32
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
800 char m_tempFileName[64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
801 #else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
802 char m_tempFileName[MAX_PATH + 3];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
803 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
804 char m_trakName[1024];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
805 char *m_editName;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
806 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
807
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
808 #endif /* __MP4_FILE_INCLUDED__ */