2 * GPAC - Multimedia Framework C SDK
\r
4 * Copyright (c) Jean Le Feuvre 2000-2005
\r
5 * All rights reserved
\r
7 * This file is part of GPAC / ISO Media File Format sub-project
\r
9 * GPAC is free software; you can redistribute it and/or modify
\r
10 * it under the terms of the GNU Lesser General Public License as published by
\r
11 * the Free Software Foundation; either version 2, or (at your option)
\r
12 * any later version.
\r
14 * GPAC is distributed in the hope that it will be useful,
\r
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
17 * GNU Lesser General Public License for more details.
\r
19 * You should have received a copy of the GNU Lesser General Public
\r
20 * License along with this library; see the file COPYING. If not, write to
\r
21 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
\r
25 #ifndef _GF_ISOMEDIA_DEV_H_
\r
26 #define _GF_ISOMEDIA_DEV_H_
\r
32 #include <gpac/isomedia.h>
\r
35 //the default size is 64, cause we need to handle large boxes...
\r
36 #define GF_ISOM_BOX \
\r
40 #define GF_ISOM_FULL_BOX \
\r
45 #define GF_ISOM_UUID_BOX \
\r
65 GF_Box *gf_isom_box_new(u32 boxType);
\r
67 GF_Err gf_isom_box_write(GF_Box *ptr, GF_BitStream *bs);
\r
68 GF_Err gf_isom_box_read(GF_Box *ptr, GF_BitStream *bs);
\r
69 void gf_isom_box_del(GF_Box *ptr);
\r
70 GF_Err gf_isom_box_size(GF_Box *ptr);
\r
72 GF_Err gf_isom_parse_box(GF_Box **outBox, GF_BitStream *bs);
\r
73 GF_Err gf_isom_read_box_list(GF_Box *s, GF_BitStream *bs, GF_Err (*add_box)(GF_Box *par, GF_Box *b));
\r
74 GF_Err gf_isom_read_box_list_ex(GF_Box *parent, GF_BitStream *bs, GF_Err (*add_box)(GF_Box *par, GF_Box *b), u32 parent_type);
\r
76 GF_Err gf_isom_box_get_size(GF_Box *ptr);
\r
77 GF_Err gf_isom_full_box_get_size(GF_Box *ptr);
\r
78 GF_Err gf_isom_box_write_header(GF_Box *ptr, GF_BitStream *bs);
\r
79 GF_Err gf_isom_full_box_read(GF_Box *ptr, GF_BitStream *bs);
\r
80 GF_Err gf_isom_full_box_write(GF_Box *s, GF_BitStream *bs);
\r
81 void gf_isom_full_box_init(GF_Box *ptr);
\r
82 void gf_isom_box_array_del(GF_List *boxList);
\r
83 GF_Err gf_isom_box_array_write(GF_Box *parent, GF_List *list, GF_BitStream *bs);
\r
84 GF_Err gf_isom_box_array_size(GF_Box *parent, GF_List *list);
\r
89 GF_ISOM_BOX_TYPE_CO64 = GF_4CC( 'c', 'o', '6', '4' ),
\r
90 GF_ISOM_BOX_TYPE_STCO = GF_4CC( 's', 't', 'c', 'o' ),
\r
91 GF_ISOM_BOX_TYPE_CRHD = GF_4CC( 'c', 'r', 'h', 'd' ),
\r
92 GF_ISOM_BOX_TYPE_CTTS = GF_4CC( 'c', 't', 't', 's' ),
\r
93 GF_ISOM_BOX_TYPE_CPRT = GF_4CC( 'c', 'p', 'r', 't' ),
\r
94 GF_ISOM_BOX_TYPE_CHPL = GF_4CC( 'c', 'h', 'p', 'l' ),
\r
95 GF_ISOM_BOX_TYPE_URL = GF_4CC( 'u', 'r', 'l', ' ' ),
\r
96 GF_ISOM_BOX_TYPE_URN = GF_4CC( 'u', 'r', 'n', ' ' ),
\r
97 GF_ISOM_BOX_TYPE_DINF = GF_4CC( 'd', 'i', 'n', 'f' ),
\r
98 GF_ISOM_BOX_TYPE_DREF = GF_4CC( 'd', 'r', 'e', 'f' ),
\r
99 GF_ISOM_BOX_TYPE_STDP = GF_4CC( 's', 't', 'd', 'p' ),
\r
100 GF_ISOM_BOX_TYPE_EDTS = GF_4CC( 'e', 'd', 't', 's' ),
\r
101 GF_ISOM_BOX_TYPE_ELST = GF_4CC( 'e', 'l', 's', 't' ),
\r
102 GF_ISOM_BOX_TYPE_UUID = GF_4CC( 'u', 'u', 'i', 'd' ),
\r
103 GF_ISOM_BOX_TYPE_FREE = GF_4CC( 'f', 'r', 'e', 'e' ),
\r
104 GF_ISOM_BOX_TYPE_HDLR = GF_4CC( 'h', 'd', 'l', 'r' ),
\r
105 GF_ISOM_BOX_TYPE_GMHD = GF_4CC( 'g', 'm', 'h', 'd' ),
\r
106 GF_ISOM_BOX_TYPE_HMHD = GF_4CC( 'h', 'm', 'h', 'd' ),
\r
107 GF_ISOM_BOX_TYPE_HINT = GF_4CC( 'h', 'i', 'n', 't' ),
\r
108 GF_ISOM_BOX_TYPE_MDIA = GF_4CC( 'm', 'd', 'i', 'a' ),
\r
109 GF_ISOM_BOX_TYPE_MDAT = GF_4CC( 'm', 'd', 'a', 't' ),
\r
110 GF_ISOM_BOX_TYPE_MDHD = GF_4CC( 'm', 'd', 'h', 'd' ),
\r
111 GF_ISOM_BOX_TYPE_MINF = GF_4CC( 'm', 'i', 'n', 'f' ),
\r
112 GF_ISOM_BOX_TYPE_MOOV = GF_4CC( 'm', 'o', 'o', 'v' ),
\r
113 GF_ISOM_BOX_TYPE_MVHD = GF_4CC( 'm', 'v', 'h', 'd' ),
\r
114 GF_ISOM_BOX_TYPE_STSD = GF_4CC( 's', 't', 's', 'd' ),
\r
115 GF_ISOM_BOX_TYPE_STSZ = GF_4CC( 's', 't', 's', 'z' ),
\r
116 GF_ISOM_BOX_TYPE_STZ2 = GF_4CC( 's', 't', 'z', '2' ),
\r
117 GF_ISOM_BOX_TYPE_STBL = GF_4CC( 's', 't', 'b', 'l' ),
\r
118 GF_ISOM_BOX_TYPE_STSC = GF_4CC( 's', 't', 's', 'c' ),
\r
119 GF_ISOM_BOX_TYPE_STSH = GF_4CC( 's', 't', 's', 'h' ),
\r
120 GF_ISOM_BOX_TYPE_SKIP = GF_4CC( 's', 'k', 'i', 'p' ),
\r
121 GF_ISOM_BOX_TYPE_SMHD = GF_4CC( 's', 'm', 'h', 'd' ),
\r
122 GF_ISOM_BOX_TYPE_STSS = GF_4CC( 's', 't', 's', 's' ),
\r
123 GF_ISOM_BOX_TYPE_STTS = GF_4CC( 's', 't', 't', 's' ),
\r
124 GF_ISOM_BOX_TYPE_TRAK = GF_4CC( 't', 'r', 'a', 'k' ),
\r
125 GF_ISOM_BOX_TYPE_TKHD = GF_4CC( 't', 'k', 'h', 'd' ),
\r
126 GF_ISOM_BOX_TYPE_TREF = GF_4CC( 't', 'r', 'e', 'f' ),
\r
127 GF_ISOM_BOX_TYPE_UDTA = GF_4CC( 'u', 'd', 't', 'a' ),
\r
128 GF_ISOM_BOX_TYPE_VMHD = GF_4CC( 'v', 'm', 'h', 'd' ),
\r
129 GF_ISOM_BOX_TYPE_FTYP = GF_4CC( 'f', 't', 'y', 'p' ),
\r
130 GF_ISOM_BOX_TYPE_FADB = GF_4CC( 'p', 'a', 'd', 'b' ),
\r
131 GF_ISOM_BOX_TYPE_PDIN = GF_4CC( 'p', 'd', 'i', 'n' ),
\r
132 GF_ISOM_BOX_TYPE_SDTP = GF_4CC( 's', 'd', 't', 'p' ),
\r
134 #ifndef GPAC_ISOM_NO_FRAGMENTS
\r
135 /*Movie Fragments*/
\r
136 GF_ISOM_BOX_TYPE_MVEX = GF_4CC( 'm', 'v', 'e', 'x' ),
\r
137 GF_ISOM_BOX_TYPE_MEHD = GF_4CC( 'm', 'e', 'h', 'd' ),
\r
138 GF_ISOM_BOX_TYPE_TREX = GF_4CC( 't', 'r', 'e', 'x' ),
\r
139 GF_ISOM_BOX_TYPE_MOOF = GF_4CC( 'm', 'o', 'o', 'f' ),
\r
140 GF_ISOM_BOX_TYPE_MFHD = GF_4CC( 'm', 'f', 'h', 'd' ),
\r
141 GF_ISOM_BOX_TYPE_TRAF = GF_4CC( 't', 'r', 'a', 'f' ),
\r
142 GF_ISOM_BOX_TYPE_TFHD = GF_4CC( 't', 'f', 'h', 'd' ),
\r
143 GF_ISOM_BOX_TYPE_TRUN = GF_4CC( 't', 'r', 'u', 'n' ),
\r
147 GF_ISOM_BOX_TYPE_DPND = GF_4CC( 'd', 'p', 'n', 'd' ),
\r
148 GF_ISOM_BOX_TYPE_IODS = GF_4CC( 'i', 'o', 'd', 's' ),
\r
149 GF_ISOM_BOX_TYPE_ESDS = GF_4CC( 'e', 's', 'd', 's' ),
\r
150 GF_ISOM_BOX_TYPE_MPOD = GF_4CC( 'm', 'p', 'o', 'd' ),
\r
151 GF_ISOM_BOX_TYPE_SYNC = GF_4CC( 's', 'y', 'n', 'c' ),
\r
152 GF_ISOM_BOX_TYPE_IPIR = GF_4CC( 'i', 'p', 'i', 'r' ),
\r
153 GF_ISOM_BOX_TYPE_SDHD = GF_4CC( 's', 'd', 'h', 'd' ),
\r
154 GF_ISOM_BOX_TYPE_ODHD = GF_4CC( 'o', 'd', 'h', 'd' ),
\r
155 GF_ISOM_BOX_TYPE_NMHD = GF_4CC( 'n', 'm', 'h', 'd' ),
\r
156 GF_ISOM_BOX_TYPE_MP4S = GF_4CC( 'm', 'p', '4', 's' ),
\r
157 GF_ISOM_BOX_TYPE_MP4A = GF_4CC( 'm', 'p', '4', 'a' ),
\r
158 GF_ISOM_BOX_TYPE_MP4V = GF_4CC( 'm', 'p', '4', 'v' ),
\r
160 /*AVC / H264 extension*/
\r
161 GF_ISOM_BOX_TYPE_AVCC = GF_4CC( 'a', 'v', 'c', 'C' ),
\r
162 GF_ISOM_BOX_TYPE_BTRT = GF_4CC( 'b', 't', 'r', 't' ),
\r
163 GF_ISOM_BOX_TYPE_M4DS = GF_4CC( 'm', '4', 'd', 's' ),
\r
164 GF_ISOM_BOX_TYPE_AVC1 = GF_4CC( 'a', 'v', 'c', '1' ),
\r
165 GF_ISOM_BOX_TYPE_PASP = GF_4CC( 'p', 'a', 's', 'p' ),
\r
167 /*3GPP extensions*/
\r
168 GF_ISOM_BOX_TYPE_DAMR = GF_4CC( 'd', 'a', 'm', 'r' ),
\r
169 GF_ISOM_BOX_TYPE_D263 = GF_4CC( 'd', '2', '6', '3' ),
\r
170 GF_ISOM_BOX_TYPE_DEVC = GF_4CC( 'd', 'e', 'v', 'c' ),
\r
171 GF_ISOM_BOX_TYPE_DQCP = GF_4CC( 'd', 'q', 'c', 'p' ),
\r
172 GF_ISOM_BOX_TYPE_DSMV = GF_4CC( 'd', 's', 'm', 'v' ),
\r
173 GF_ISOM_BOX_TYPE_TSEL = GF_4CC( 't', 's', 'e', 'l' ),
\r
175 /*3GPP text / MPEG-4 StreamingText*/
\r
176 GF_ISOM_BOX_TYPE_FTAB = GF_4CC( 'f', 't', 'a', 'b' ),
\r
177 GF_ISOM_BOX_TYPE_TX3G = GF_4CC( 't', 'x', '3', 'g' ),
\r
178 GF_ISOM_BOX_TYPE_STYL = GF_4CC( 's', 't', 'y', 'l' ),
\r
179 GF_ISOM_BOX_TYPE_HLIT = GF_4CC( 'h', 'l', 'i', 't' ),
\r
180 GF_ISOM_BOX_TYPE_HCLR = GF_4CC( 'h', 'c', 'l', 'r' ),
\r
181 GF_ISOM_BOX_TYPE_KROK = GF_4CC( 'k', 'r', 'o', 'k' ),
\r
182 GF_ISOM_BOX_TYPE_DLAY = GF_4CC( 'd', 'l', 'a', 'y' ),
\r
183 GF_ISOM_BOX_TYPE_HREF = GF_4CC( 'h', 'r', 'e', 'f' ),
\r
184 GF_ISOM_BOX_TYPE_TBOX = GF_4CC( 't', 'b', 'o', 'x' ),
\r
185 GF_ISOM_BOX_TYPE_BLNK = GF_4CC( 'b', 'l', 'n', 'k' ),
\r
186 GF_ISOM_BOX_TYPE_TWRP = GF_4CC( 't', 'w', 'r', 'p' ),
\r
188 /* ISO Base Media File Format Extensions for MPEG-21 */
\r
189 GF_ISOM_BOX_TYPE_META = GF_4CC( 'm', 'e', 't', 'a' ),
\r
190 GF_ISOM_BOX_TYPE_XML = GF_4CC( 'x', 'm', 'l', ' ' ),
\r
191 GF_ISOM_BOX_TYPE_BXML = GF_4CC( 'b', 'x', 'm', 'l' ),
\r
192 GF_ISOM_BOX_TYPE_ILOC = GF_4CC( 'i', 'l', 'o', 'c' ),
\r
193 GF_ISOM_BOX_TYPE_PITM = GF_4CC( 'p', 'i', 't', 'm' ),
\r
194 GF_ISOM_BOX_TYPE_IPRO = GF_4CC( 'i', 'p', 'r', 'o' ),
\r
195 GF_ISOM_BOX_TYPE_INFE = GF_4CC( 'i', 'n', 'f', 'e' ),
\r
196 GF_ISOM_BOX_TYPE_IINF = GF_4CC( 'i', 'i', 'n', 'f' ),
\r
197 GF_ISOM_BOX_TYPE_ENCA = GF_4CC( 'e', 'n', 'c', 'a' ),
\r
198 GF_ISOM_BOX_TYPE_ENCV = GF_4CC( 'e', 'n', 'c', 'v' ),
\r
199 GF_ISOM_BOX_TYPE_ENCT = GF_4CC( 'e', 'n', 'c', 't' ),
\r
200 GF_ISOM_BOX_TYPE_ENCS = GF_4CC( 'e', 'n', 'c', 's' ),
\r
201 GF_ISOM_BOX_TYPE_SINF = GF_4CC( 's', 'i', 'n', 'f' ),
\r
202 GF_ISOM_BOX_TYPE_FRMA = GF_4CC( 'f', 'r', 'm', 'a' ),
\r
203 GF_ISOM_BOX_TYPE_SCHM = GF_4CC( 's', 'c', 'h', 'm' ),
\r
204 GF_ISOM_BOX_TYPE_SCHI = GF_4CC( 's', 'c', 'h', 'i' ),
\r
206 GF_ISOM_BOX_TYPE_METX = GF_4CC( 'm', 'e', 't', 'x' ),
\r
207 GF_ISOM_BOX_TYPE_METT = GF_4CC( 'm', 'e', 't', 't' ),
\r
209 /* ISMA 1.0 Encryption and Authentication V 1.0 */
\r
210 GF_ISOM_BOX_TYPE_IKMS = GF_4CC( 'i', 'K', 'M', 'S' ),
\r
211 GF_ISOM_BOX_TYPE_ISFM = GF_4CC( 'i', 'S', 'F', 'M' ),
\r
213 /* Hinting boxes */
\r
214 GF_ISOM_BOX_TYPE_RTP_STSD = GF_4CC( 'r', 't', 'p', ' ' ),
\r
215 GF_ISOM_BOX_TYPE_HNTI = GF_4CC( 'h', 'n', 't', 'i' ),
\r
216 GF_ISOM_BOX_TYPE_RTP = GF_4CC( 'r', 't', 'p', ' ' ),
\r
217 GF_ISOM_BOX_TYPE_SDP = GF_4CC( 's', 'd', 'p', ' ' ),
\r
218 GF_ISOM_BOX_TYPE_HINF = GF_4CC( 'h', 'i', 'n', 'f' ),
\r
219 GF_ISOM_BOX_TYPE_NAME = GF_4CC( 'n', 'a', 'm', 'e' ),
\r
220 GF_ISOM_BOX_TYPE_TRPY = GF_4CC( 't', 'r', 'p', 'y' ),
\r
221 GF_ISOM_BOX_TYPE_NUMP = GF_4CC( 'n', 'u', 'm', 'p' ),
\r
222 GF_ISOM_BOX_TYPE_TOTL = GF_4CC( 't', 'o', 't', 'l' ),
\r
223 GF_ISOM_BOX_TYPE_NPCK = GF_4CC( 'n', 'p', 'c', 'k' ),
\r
224 GF_ISOM_BOX_TYPE_TPYL = GF_4CC( 't', 'p', 'y', 'l' ),
\r
225 GF_ISOM_BOX_TYPE_TPAY = GF_4CC( 't', 'p', 'a', 'y' ),
\r
226 GF_ISOM_BOX_TYPE_MAXR = GF_4CC( 'm', 'a', 'x', 'r' ),
\r
227 GF_ISOM_BOX_TYPE_DMED = GF_4CC( 'd', 'm', 'e', 'd' ),
\r
228 GF_ISOM_BOX_TYPE_DIMM = GF_4CC( 'd', 'i', 'm', 'm' ),
\r
229 GF_ISOM_BOX_TYPE_DREP = GF_4CC( 'd', 'r', 'e', 'p' ),
\r
230 GF_ISOM_BOX_TYPE_TMIN = GF_4CC( 't', 'm', 'i', 'n' ),
\r
231 GF_ISOM_BOX_TYPE_TMAX = GF_4CC( 't', 'm', 'a', 'x' ),
\r
232 GF_ISOM_BOX_TYPE_PMAX = GF_4CC( 'p', 'm', 'a', 'x' ),
\r
233 GF_ISOM_BOX_TYPE_DMAX = GF_4CC( 'd', 'm', 'a', 'x' ),
\r
234 GF_ISOM_BOX_TYPE_PAYT = GF_4CC( 'p', 'a', 'y', 't' ),
\r
235 GF_ISOM_BOX_TYPE_RELY = GF_4CC( 'r', 'e', 'l', 'y' ),
\r
236 GF_ISOM_BOX_TYPE_TIMS = GF_4CC( 't', 'i', 'm', 's' ),
\r
237 GF_ISOM_BOX_TYPE_TSRO = GF_4CC( 't', 's', 'r', 'o' ),
\r
238 GF_ISOM_BOX_TYPE_SNRO = GF_4CC( 's', 'n', 'r', 'o' ),
\r
239 GF_ISOM_BOX_TYPE_RTPO = GF_4CC( 'r', 't', 'p', 'o' ),
\r
241 /*internal type for track references*/
\r
242 GF_ISOM_BOX_TYPE_REFT = GF_4CC( 'R', 'E', 'F', 'T' ),
\r
244 /* Apple extensions */
\r
246 GF_ISOM_BOX_TYPE_ILST = GF_4CC( 'i', 'l', 's', 't' ),
\r
247 GF_ISOM_BOX_TYPE_0xA9NAM = GF_4CC( 0xA9, 'n', 'a', 'm' ),
\r
248 GF_ISOM_BOX_TYPE_0xA9CMT = GF_4CC( 0xA9, 'c', 'm', 't' ),
\r
249 GF_ISOM_BOX_TYPE_0xA9DAY = GF_4CC( 0xA9, 'd', 'a', 'y' ),
\r
250 GF_ISOM_BOX_TYPE_0xA9ART = GF_4CC( 0xA9, 'A', 'R', 'T' ),
\r
251 GF_ISOM_BOX_TYPE_0xA9TRK = GF_4CC( 0xA9, 't', 'r', 'k' ),
\r
252 GF_ISOM_BOX_TYPE_0xA9ALB = GF_4CC( 0xA9, 'a', 'l', 'b' ),
\r
253 GF_ISOM_BOX_TYPE_0xA9COM = GF_4CC( 0xA9, 'c', 'o', 'm' ),
\r
254 GF_ISOM_BOX_TYPE_0xA9WRT = GF_4CC( 0xA9, 'w', 'r', 't' ),
\r
255 GF_ISOM_BOX_TYPE_0xA9TOO = GF_4CC( 0xA9, 't', 'o', 'o' ),
\r
256 GF_ISOM_BOX_TYPE_0xA9CPY = GF_4CC( 0xA9, 'c', 'p', 'y' ),
\r
257 GF_ISOM_BOX_TYPE_0xA9DES = GF_4CC( 0xA9, 'd', 'e', 's' ),
\r
258 GF_ISOM_BOX_TYPE_0xA9GEN = GF_4CC( 0xA9, 'g', 'e', 'n' ),
\r
259 GF_ISOM_BOX_TYPE_0xA9GRP = GF_4CC( 0xA9, 'g', 'r', 'p' ),
\r
260 GF_ISOM_BOX_TYPE_0xA9ENC = GF_4CC( 0xA9, 'e', 'n', 'c' ),
\r
261 GF_ISOM_BOX_TYPE_aART = GF_4CC( 'a', 'A', 'R', 'T' ),
\r
262 GF_ISOM_BOX_TYPE_PGAP = GF_4CC( 'p', 'g', 'a', 'p' ),
\r
263 GF_ISOM_BOX_TYPE_GNRE = GF_4CC( 'g', 'n', 'r', 'e' ),
\r
264 GF_ISOM_BOX_TYPE_DISK = GF_4CC( 'd', 'i', 's', 'k' ),
\r
265 GF_ISOM_BOX_TYPE_TRKN = GF_4CC( 't', 'r', 'k', 'n' ),
\r
266 GF_ISOM_BOX_TYPE_TMPO = GF_4CC( 't', 'm', 'p', 'o' ),
\r
267 GF_ISOM_BOX_TYPE_CPIL = GF_4CC( 'c', 'p', 'i', 'l' ),
\r
268 GF_ISOM_BOX_TYPE_COVR = GF_4CC( 'c', 'o', 'v', 'r' ),
\r
269 GF_ISOM_BOX_TYPE_iTunesSpecificInfo = GF_4CC( '-', '-', '-', '-' ),
\r
270 GF_ISOM_BOX_TYPE_DATA = GF_4CC( 'd', 'a', 't', 'a' ),
\r
272 GF_ISOM_HANDLER_TYPE_MDIR = GF_4CC( 'm', 'd', 'i', 'r' ),
\r
273 GF_ISOM_BOX_TYPE_CHAP = GF_4CC( 'c', 'h', 'a', 'p' ),
\r
275 /*OMA (P)DCF boxes*/
\r
276 GF_ISOM_BOX_TYPE_OHDR = GF_4CC( 'o', 'h', 'd', 'r' ),
\r
277 GF_ISOM_BOX_TYPE_GRPI = GF_4CC( 'g', 'r', 'p', 'i' ),
\r
278 GF_ISOM_BOX_TYPE_MDRI = GF_4CC( 'm', 'd', 'r', 'i' ),
\r
279 GF_ISOM_BOX_TYPE_ODTT = GF_4CC( 'o', 'd', 't', 't' ),
\r
280 GF_ISOM_BOX_TYPE_ODRB = GF_4CC( 'o', 'd', 'r', 'b' ),
\r
281 GF_ISOM_BOX_TYPE_ODKM = GF_4CC( 'o', 'd', 'k', 'm' ),
\r
282 GF_ISOM_BOX_TYPE_ODAF = GF_4CC( 'o', 'd', 'a', 'f' ),
\r
285 GF_ISOM_BOX_TYPE_DIMS = GF_4CC( 'd', 'i', 'm', 's' ),
\r
286 GF_ISOM_BOX_TYPE_DIMC = GF_4CC( 'd', 'i', 'm', 'C' ),
\r
287 GF_ISOM_BOX_TYPE_DIST = GF_4CC( 'd', 'i', 'S', 'T' ),
\r
290 GF_ISOM_BOX_TYPE_AC3 = GF_4CC( 'a', 'c', '-', '3' ),
\r
291 GF_ISOM_BOX_TYPE_DAC3 = GF_4CC( 'd', 'a', 'c', '3' ),
\r
293 /*ALL INTERNAL BOXES - NEVER WRITTEN TO FILE!!*/
\r
295 /*generic handlers*/
\r
296 GF_ISOM_BOX_TYPE_GNRM = GF_4CC( 'g', 'n', 'r', 'm' ),
\r
297 GF_ISOM_BOX_TYPE_GNRV = GF_4CC( 'g', 'n', 'r', 'v' ),
\r
298 GF_ISOM_BOX_TYPE_GNRA = GF_4CC( 'g', 'n', 'r', 'a' ),
\r
299 /*storage of AU fragments (for MPEG-4 visual resync marker (video packets), located in stbl.*/
\r
300 GF_ISOM_BOX_TYPE_STSF = GF_4CC( 'S', 'T', 'S', 'F' ),
\r
301 /*base constructor of all hint formats (currently only RTP uses it)*/
\r
302 GF_ISOM_BOX_TYPE_GHNT = GF_4CC( 'g', 'h', 'n', 't' ),
\r
303 /*for compatibility with old files hinted for DSS - needs special parsing*/
\r
304 GF_ISOM_BOX_TYPE_VOID = GF_4CC( 'V', 'O', 'I', 'D' ),
\r
311 /*note: the data is NEVER loaded to the mdat in this lib*/
\r
328 } GF_UnknownUUIDBox;
\r
334 u64 modificationTime;
\r
339 u16 preferredVolume;
\r
351 u32 previewDuration;
\r
354 u32 selectionDuration;
\r
356 } GF_MovieHeaderBox;
\r
361 GF_Descriptor *descriptor;
\r
362 } GF_ObjectDescriptorBox;
\r
364 /*used for entry list*/
\r
367 u64 segmentDuration;
\r
375 GF_List *entryList;
\r
381 GF_EditListBox *editList;
\r
385 /*used to classify boxes in the UserData GF_Box*/
\r
396 GF_List *recordList;
\r
402 GF_MovieHeaderBox *mvhd;
\r
403 GF_ObjectDescriptorBox *iods;
\r
404 GF_UserDataBox *udta;
\r
405 #ifndef GPAC_ISOM_NO_FRAGMENTS
\r
406 struct __tag_mvex_box *mvex;
\r
408 /*meta box if any*/
\r
409 struct __tag_meta_box *meta;
\r
411 GF_List *trackList;
\r
423 u64 modificationTime;
\r
429 u16 alternate_group;
\r
434 } GF_TrackHeaderBox;
\r
440 } GF_TrackReferenceBox;
\r
447 GF_UserDataBox *udta;
\r
448 GF_TrackHeaderBox *Header;
\r
449 struct __tag_media_box *Media;
\r
450 GF_EditBox *editBox;
\r
451 GF_TrackReferenceBox *References;
\r
452 /*meta box if any*/
\r
453 struct __tag_meta_box *meta;
\r
458 /*private for media padding*/
\r
460 /*private for editing*/
\r
462 /*private for editing*/
\r
470 u64 modificationTime;
\r
473 char packedLanguage[4];
\r
475 } GF_MediaHeaderBox;
\r
487 typedef struct __tag_media_box
\r
490 GF_TrackBox *mediaTrack;
\r
491 GF_MediaHeaderBox *mediaHeader;
\r
492 GF_HandlerBox *handler;
\r
493 struct __tag_media_info_box *information;
\r
501 } GF_VideoMediaHeaderBox;
\r
507 } GF_SoundMediaHeaderBox;
\r
512 /*this is used for us INTERNALLY*/
\r
518 u32 slidingAverageBitrate;
\r
519 } GF_HintMediaHeaderBox;
\r
524 } GF_MPEGMediaHeaderBox;
\r
529 } GF_ODMediaHeaderBox;
\r
534 } GF_OCRMediaHeaderBox;
\r
539 } GF_SceneMediaHeaderBox;
\r
545 } GF_DataReferenceBox;
\r
550 GF_DataReferenceBox *dref;
\r
551 } GF_DataInformationBox;
\r
553 #define GF_ISOM_DATAENTRY_FIELDS \
\r
559 GF_ISOM_DATAENTRY_FIELDS
\r
565 GF_ISOM_DATAENTRY_FIELDS
\r
566 } GF_DataEntryURLBox;
\r
571 GF_ISOM_DATAENTRY_FIELDS
\r
573 } GF_DataEntryURNBox;
\r
584 GF_SttsEntry *entries;
\r
585 u32 nb_entries, alloc_size;
\r
587 #ifndef GPAC_READ_ONLY
\r
588 /*cache for WRITE*/
\r
589 u32 w_currentSampleNum;
\r
593 u32 r_FirstSampleInEntry;
\r
594 u32 r_currentEntryIndex;
\r
596 } GF_TimeToSampleBox;
\r
599 /*TO CHECK - it could be reasonnable to only use 16bits for both count and offset*/
\r
603 u32 decodingOffset;
\r
609 GF_DttsEntry *entries;
\r
610 u32 nb_entries, alloc_size;
\r
612 #ifndef GPAC_READ_ONLY
\r
613 u32 w_LastSampleNumber;
\r
614 /*force one sample per entry*/
\r
618 u32 r_currentEntryIndex;
\r
619 u32 r_FirstSampleInEntry;
\r
620 } GF_CompositionOffsetBox;
\r
627 u16 *fragmentSizes;
\r
633 GF_List *entryList;
\r
634 #ifndef GPAC_READ_ONLY
\r
635 /*Cache for write*/
\r
636 GF_StsfEntry *w_currentEntry;
\r
637 u32 w_currentEntryIndex;
\r
640 u32 r_currentEntryIndex;
\r
641 GF_StsfEntry *r_currentEntry;
\r
642 } GF_SampleFragmentBox;
\r
645 #define GF_ISOM_SAMPLE_ENTRY_FIELDS \
\r
647 u16 dataReferenceIndex; \
\r
648 char reserved[ 6 ]; \
\r
649 struct __tag_protect_box *protection_info;
\r
651 /*base sample entry box (never used but for typecasting)*/
\r
654 GF_ISOM_SAMPLE_ENTRY_FIELDS
\r
655 } GF_SampleEntryBox;
\r
659 GF_ISOM_SAMPLE_ENTRY_FIELDS
\r
660 /*box type as specified in the file (not this box's type!!)*/
\r
665 } GF_GenericSampleEntryBox;
\r
673 /*for all MPEG4 media except audio and video*/
\r
676 GF_ISOM_SAMPLE_ENTRY_FIELDS
\r
678 /*used for hinting when extracting the OD stream...*/
\r
680 } GF_MPEGSampleEntryBox;
\r
687 } GF_PixelAspectRatioBox;
\r
690 #define GF_ISOM_VISUAL_SAMPLE_ENTRY \
\r
691 GF_ISOM_SAMPLE_ENTRY_FIELDS \
\r
695 u32 temporal_quality; \
\r
696 u32 spacial_quality; \
\r
697 u16 Width, Height; \
\r
698 u32 horiz_res, vert_res; \
\r
699 u32 entry_data_size; \
\r
700 u16 frames_per_sample; \
\r
701 char compressor_name[33]; \
\r
703 s16 color_table_index; \
\r
704 GF_PixelAspectRatioBox *pasp;
\r
708 GF_ISOM_VISUAL_SAMPLE_ENTRY
\r
709 } GF_VisualSampleEntryBox;
\r
711 void gf_isom_video_sample_entry_init(GF_VisualSampleEntryBox *ent);
\r
712 GF_Err gf_isom_video_sample_entry_read(GF_VisualSampleEntryBox *ptr, GF_BitStream *bs);
\r
713 #ifndef GPAC_READ_ONLY
\r
714 void gf_isom_video_sample_entry_write(GF_VisualSampleEntryBox *ent, GF_BitStream *bs);
\r
715 void gf_isom_video_sample_entry_size(GF_VisualSampleEntryBox *ent);
\r
724 } GF_MPEG4BitRateBox;
\r
729 GF_List *descriptors;
\r
730 } GF_MPEG4ExtensionDescriptorsBox;
\r
735 GF_AVCConfig *config;
\r
736 } GF_AVCConfigurationBox;
\r
740 GF_ISOM_VISUAL_SAMPLE_ENTRY
\r
742 /*used for Publishing*/
\r
745 /*avc extensions - we merged with regular 'mp4v' box to handle isma E&A signaling of AVC*/
\r
746 GF_AVCConfigurationBox *avc_config;
\r
747 GF_MPEG4BitRateBox *bitrate;
\r
748 /*ext descriptors*/
\r
749 GF_MPEG4ExtensionDescriptorsBox *descr;
\r
750 /*internally emulated esd*/
\r
753 GF_UnknownUUIDBox *ipod_ext;
\r
755 } GF_MPEGVisualSampleEntryBox;
\r
758 /*this is the default visual sdst (to handle unknown media)*/
\r
761 GF_ISOM_VISUAL_SAMPLE_ENTRY
\r
762 /*box type as specified in the file (not this box's type!!)*/
\r
764 /*opaque description data (ESDS in MP4, SMI in SVQ3, ...)*/
\r
767 } GF_GenericVisualSampleEntryBox;
\r
770 #define GF_ISOM_AUDIO_SAMPLE_ENTRY \
\r
771 GF_ISOM_SAMPLE_ENTRY_FIELDS \
\r
775 u16 channel_count; \
\r
776 u16 bitspersample; \
\r
777 u16 compression_id; \
\r
779 u16 samplerate_hi; \
\r
785 GF_ISOM_AUDIO_SAMPLE_ENTRY
\r
786 } GF_AudioSampleEntryBox;
\r
788 void gf_isom_audio_sample_entry_init(GF_AudioSampleEntryBox *ptr);
\r
789 GF_Err gf_isom_audio_sample_entry_read(GF_AudioSampleEntryBox *ptr, GF_BitStream *bs);
\r
790 #ifndef GPAC_READ_ONLY
\r
791 void gf_isom_audio_sample_entry_write(GF_AudioSampleEntryBox *ptr, GF_BitStream *bs);
\r
792 void gf_isom_audio_sample_entry_size(GF_AudioSampleEntryBox *ptr);
\r
798 GF_ISOM_AUDIO_SAMPLE_ENTRY
\r
801 } GF_MPEGAudioSampleEntryBox;
\r
807 } GF_3GPPConfigBox;
\r
811 GF_ISOM_AUDIO_SAMPLE_ENTRY
\r
812 GF_3GPPConfigBox *info;
\r
813 } GF_3GPPAudioSampleEntryBox;
\r
817 GF_ISOM_VISUAL_SAMPLE_ENTRY
\r
818 GF_3GPPConfigBox *info;
\r
819 } GF_3GPPVisualSampleEntryBox;
\r
821 /*this is the default visual sdst (to handle unknown media)*/
\r
824 GF_ISOM_AUDIO_SAMPLE_ENTRY
\r
825 /*box type as specified in the file (not this box's type!!)*/
\r
827 /*opaque description data (ESDS in MP4, ...)*/
\r
830 } GF_GenericAudioSampleEntryBox;
\r
840 GF_ISOM_AUDIO_SAMPLE_ENTRY
\r
841 GF_AC3ConfigBox *info;
\r
842 } GF_AC3SampleEntryBox;
\r
853 Bool fullRequestHost;
\r
855 u8 containsRedundant;
\r
856 char *textEncoding;
\r
857 char *contentEncoding;
\r
858 } GF_DIMSSceneConfigBox;
\r
863 char *content_script_types;
\r
864 } GF_DIMSScriptTypesBox;
\r
868 GF_ISOM_SAMPLE_ENTRY_FIELDS
\r
869 GF_DIMSSceneConfigBox *config;
\r
870 GF_MPEG4BitRateBox *bitrate;
\r
871 GF_DIMSScriptTypesBox *scripts;
\r
872 } GF_DIMSSampleEntryBox;
\r
875 /*base sample entry box (never used but for typecasting)*/
\r
878 GF_ISOM_SAMPLE_ENTRY_FIELDS
\r
879 char *content_encoding; //optional
\r
880 char *mime_type_or_namespace; //not optional
\r
881 char *xml_schema_loc; // optional
\r
882 GF_MPEG4BitRateBox *bitrate; // optional
\r
883 } GF_MetaDataSampleEntryBox;
\r
889 } GF_SampleDescriptionBox;
\r
895 /*if this is the compact version, sample size is actually fieldSize*/
\r
900 } GF_SampleSizeBox;
\r
908 } GF_ChunkOffsetBox;
\r
916 } GF_ChunkLargeOffsetBox;
\r
922 u32 samplesPerChunk;
\r
923 u32 sampleDescriptionIndex;
\r
930 GF_StscEntry *entries;
\r
931 u32 alloc_size, nb_entries;
\r
933 /*0-based cache for READ. In WRITE mode, we always have 1 sample per chunk so no need for a cache*/
\r
935 /*first sample number in this chunk*/
\r
936 u32 firstSampleInCurrentChunk;
\r
939 } GF_SampleToChunkBox;
\r
944 u32 alloc_size, nb_entries;
\r
945 u32 *sampleNumbers;
\r
946 /*cache for READ mode (in write we realloc no matter what)*/
\r
947 u32 r_LastSyncSample;
\r
948 /*0-based index in the array*/
\r
949 u32 r_LastSampleIndex;
\r
950 } GF_SyncSampleBox;
\r
954 u32 shadowedSampleNumber;
\r
955 s32 syncSampleNumber;
\r
962 /*Cache for read mode*/
\r
963 u32 r_LastEntryIndex;
\r
964 u32 r_LastFoundSample;
\r
965 } GF_ShadowSyncBox;
\r
972 } GF_DegradationPriorityBox;
\r
979 } GF_PaddingBitsBox;
\r
985 /*each dep type is packed on 1 byte*/
\r
987 } GF_SampleDependencyTypeBox;
\r
993 GF_TimeToSampleBox *TimeToSample;
\r
994 GF_CompositionOffsetBox *CompositionOffset;
\r
995 GF_SyncSampleBox *SyncSample;
\r
996 GF_SampleDescriptionBox *SampleDescription;
\r
997 GF_SampleSizeBox *SampleSize;
\r
998 GF_SampleToChunkBox *SampleToChunk;
\r
999 /*untyped, to handle 32 bits and 64 bits chunkOffsets*/
\r
1000 GF_Box *ChunkOffset;
\r
1001 GF_ShadowSyncBox *ShadowSync;
\r
1002 GF_DegradationPriorityBox *DegradationPriority;
\r
1003 GF_PaddingBitsBox *PaddingBits;
\r
1004 GF_SampleDependencyTypeBox *SampleDep;
\r
1005 GF_SampleFragmentBox *Fragments;
\r
1007 u32 MaxSamplePerChunk;
\r
1009 u16 trackPriority;
\r
1010 u32 currentEntryIndex;
\r
1011 } GF_SampleTableBox;
\r
1013 typedef struct __tag_media_info_box
\r
1016 GF_DataInformationBox *dataInformation;
\r
1017 GF_SampleTableBox *sampleTable;
\r
1018 GF_Box *InfoHeader;
\r
1019 struct __tag_data_map *dataHandler;
\r
1020 u32 dataEntryIndex;
\r
1022 } GF_MediaInformationBox;
\r
1030 } GF_FreeSpaceBox;
\r
1035 char packedLanguageCode[4];
\r
1037 } GF_CopyrightBox;
\r
1044 } GF_ChapterEntry;
\r
1050 } GF_ChapterListBox;
\r
1055 u32 reference_type;
\r
1058 } GF_TrackReferenceTypeBox;
\r
1075 } GF_ProgressiveDownloadBox;
\r
1079 3GPP streaming text boxes
\r
1086 GF_FontRecord *fonts;
\r
1087 } GF_FontTableBox;
\r
1091 GF_ISOM_SAMPLE_ENTRY_FIELDS \
\r
1093 s8 horizontal_justification;
\r
1094 s8 vertical_justification;
\r
1097 GF_BoxRecord default_box;
\r
1098 GF_StyleRecord default_style;
\r
1099 GF_FontTableBox *font_table;
\r
1100 } GF_TextSampleEntryBox;
\r
1106 GF_StyleRecord *styles;
\r
1107 } GF_TextStyleBox;
\r
1112 u16 startcharoffset;
\r
1113 u16 endcharoffset;
\r
1114 } GF_TextHighlightBox;
\r
1121 } GF_TextHighlightColorBox;
\r
1125 u32 highlight_endtime;
\r
1126 u16 start_charoffset;
\r
1127 u16 end_charoffset;
\r
1133 u32 highlight_starttime;
\r
1135 KaraokeRecord *records;
\r
1136 } GF_TextKaraokeBox;
\r
1142 } GF_TextScrollDelayBox;
\r
1147 u16 startcharoffset;
\r
1148 u16 endcharoffset;
\r
1151 } GF_TextHyperTextBox;
\r
1162 u16 startcharoffset;
\r
1163 u16 endcharoffset;
\r
1164 } GF_TextBlinkBox;
\r
1176 u32 *attributeList;
\r
1177 u32 attributeListCount;
\r
1178 } GF_TrackSelectionBox;
\r
1181 MPEG-21 extensions
\r
1195 } GF_BinaryXMLBox;
\r
1199 u64 extent_offset;
\r
1200 u64 extent_length;
\r
1201 #ifndef GPAC_READ_OLNLY
\r
1202 /*for storage only*/
\r
1203 u64 original_extent_offset;
\r
1205 } GF_ItemExtentEntry;
\r
1210 u16 data_reference_index;
\r
1212 #ifndef GPAC_READ_OLNLY
\r
1213 /*for storage only*/
\r
1214 u64 original_base_offset;
\r
1216 GF_List *extent_entries;
\r
1217 } GF_ItemLocationEntry;
\r
1224 u8 base_offset_size;
\r
1225 GF_List *location_entries;
\r
1226 } GF_ItemLocationBox;
\r
1232 } GF_PrimaryItemBox;
\r
1237 GF_List *protection_information;
\r
1238 } GF_ItemProtectionBox;
\r
1244 u16 item_protection_index;
\r
1245 /*zero-terminated strings*/
\r
1247 char *content_type;
\r
1248 char *content_encoding;
\r
1249 // needed to actually read the resource file, but not written in the MP21 file.
\r
1251 } GF_ItemInfoEntryBox;
\r
1256 GF_List *item_infos;
\r
1263 } GF_OriginalFormatBox;
\r
1269 u32 scheme_version;
\r
1271 } GF_SchemeTypeBox;
\r
1273 /*ISMACryp specific*/
\r
1277 /*zero-terminated string*/
\r
1281 /*ISMACryp specific*/
\r
1282 typedef struct __isma_format_box
\r
1285 u8 selective_encryption;
\r
1286 u8 key_indicator_length;
\r
1288 } GF_ISMASampleFormatBox;
\r
1293 GF_ISMAKMSBox *ikms;
\r
1294 GF_ISMASampleFormatBox *isfm;
\r
1295 struct __oma_kms_box *okms;
\r
1296 } GF_SchemeInformationBox;
\r
1298 typedef struct __tag_protect_box
\r
1301 GF_OriginalFormatBox *original_format;
\r
1302 GF_SchemeTypeBox *scheme_type;
\r
1303 GF_SchemeInformationBox *info;
\r
1304 } GF_ProtectionInfoBox;
\r
1309 GF_List *descriptors;
\r
1315 GF_IPMP_ToolList *ipmp_tools;
\r
1316 GF_List *descriptors;
\r
1317 } GF_IPMPControlBox;
\r
1320 typedef struct __tag_meta_box
\r
1323 GF_HandlerBox *handler;
\r
1324 GF_PrimaryItemBox *primary_resource;
\r
1325 GF_DataInformationBox *file_locations;
\r
1326 GF_ItemLocationBox *item_locations;
\r
1327 GF_ItemProtectionBox *protections;
\r
1328 GF_ItemInfoBox *item_infos;
\r
1329 GF_IPMPControlBox *IPMP_control;
\r
1330 GF_List *other_boxes;
\r
1336 #ifndef GPAC_ISOM_NO_FRAGMENTS
\r
1338 /*V2 boxes - Movie Fragments*/
\r
1343 u64 fragment_duration;
\r
1344 } GF_MovieExtendsHeaderBox;
\r
1347 typedef struct __tag_mvex_box
\r
1350 GF_List *TrackExList;
\r
1351 GF_MovieExtendsHeaderBox *mehd;
\r
1353 } GF_MovieExtendsBox;
\r
1355 /*the TrackExtends contains default values for the track fragments*/
\r
1360 u32 def_sample_desc_index;
\r
1361 u32 def_sample_duration;
\r
1362 u32 def_sample_size;
\r
1363 u32 def_sample_flags;
\r
1364 GF_TrackBox *track;
\r
1365 } GF_TrackExtendsBox;
\r
1367 /*indicates the seq num of this fragment*/
\r
1371 u32 sequence_number;
\r
1372 } GF_MovieFragmentHeaderBox;
\r
1374 /*MovieFragment is a container IN THE FILE, contains 1 fragment*/
\r
1378 GF_MovieFragmentHeaderBox *mfhd;
\r
1379 GF_List *TrackList;
\r
1381 } GF_MovieFragmentBox;
\r
1384 /*FLAGS for TRAF*/
\r
1387 GF_ISOM_TRAF_BASE_OFFSET = 0x01,
\r
1388 GF_ISOM_TRAF_SAMPLE_DESC = 0x02,
\r
1389 GF_ISOM_TRAF_SAMPLE_DUR = 0x08,
\r
1390 GF_ISOM_TRAF_SAMPLE_SIZE = 0x10,
\r
1391 GF_ISOM_TRAF_SAMPLE_FLAGS = 0x20,
\r
1392 GF_ISOM_TRAF_DUR_EMPTY = 0x10000
\r
1399 /* all the following are optional fields */
\r
1400 u64 base_data_offset;
\r
1401 u32 sample_desc_index;
\r
1402 u32 def_sample_duration;
\r
1403 u32 def_sample_size;
\r
1404 u32 def_sample_flags;
\r
1405 u32 EmptyDuration;
\r
1406 u8 IFrameSwitching;
\r
1407 } GF_TrackFragmentHeaderBox;
\r
1412 GF_TrackFragmentHeaderBox *tfhd;
\r
1413 GF_List *TrackRuns;
\r
1414 /*keep a pointer to default flags*/
\r
1415 GF_TrackExtendsBox *trex;
\r
1416 /*when data caching is on*/
\r
1418 } GF_TrackFragmentBox;
\r
1420 /*FLAGS for TRUN : specify what is written in the SampleTable of TRUN*/
\r
1423 GF_ISOM_TRUN_DATA_OFFSET = 0x01,
\r
1424 GF_ISOM_TRUN_FIRST_FLAG = 0x04,
\r
1425 GF_ISOM_TRUN_DURATION = 0x100,
\r
1426 GF_ISOM_TRUN_SIZE = 0x200,
\r
1427 GF_ISOM_TRUN_FLAGS = 0x400,
\r
1428 GF_ISOM_TRUN_CTS_OFFSET = 0x800
\r
1435 /*the following are optional fields */
\r
1437 u32 first_sample_flags;
\r
1441 /*in write mode with data caching*/
\r
1442 GF_BitStream *cache;
\r
1443 } GF_TrackFragmentRunBox;
\r
1456 /*RTP Hint Track Sample Entry*/
\r
1459 GF_ISOM_SAMPLE_ENTRY_FIELDS
\r
1460 u16 HintTrackVersion;
\r
1461 u16 LastCompatibleVersion;
\r
1462 u32 MaxPacketSize;
\r
1463 GF_List *HintDataTable;
\r
1464 /*this is where we store the current RTP sample in read/write mode*/
\r
1465 struct __tag_hint_sample *hint_sample;
\r
1466 /*current hint sample in read mode, 1-based (0 is reset)*/
\r
1468 u32 pck_sn, ts_offset, ssrc;
\r
1469 GF_TrackReferenceTypeBox *hint_ref;
\r
1470 } GF_HintSampleEntryBox;
\r
1495 /*contains GF_SDPBox if in track, GF_RTPBox if in movie*/
\r
1498 } GF_HintTrackInfoBox;
\r
1508 /***********************************************************
\r
1509 data entry tables for RTP
\r
1510 ***********************************************************/
\r
1515 } GF_TSHintEntryBox;
\r
1521 } GF_TimeOffHintEntryBox;
\r
1527 } GF_SeqOffHintEntryBox;
\r
1531 /***********************************************************
\r
1532 hint track information boxes for RTP
\r
1533 ***********************************************************/
\r
1535 /*Total number of bytes that will be sent, including 12-byte RTP headers, but not including any network headers*/
\r
1542 /*32-bits version of trpy used in Darwin*/
\r
1549 /*Total number of network packets that will be sent*/
\r
1556 /*32-bits version of nump used in Darwin*/
\r
1564 /*Total number of bytes that will be sent, not including 12-byte RTP headers*/
\r
1571 /*32-bits version of tpyl used in Darwin*/
\r
1578 /*Maximum data rate in bits per second.*/
\r
1587 /*Total number of bytes from the media track to be sent*/
\r
1594 /*Number of bytes of immediate data to be sent*/
\r
1602 /*Number of bytes of repeated data to be sent*/
\r
1609 /*Smallest relative transmission time, in milliseconds. signed integer for smoothing*/
\r
1616 /*Largest relative transmission time, in milliseconds.*/
\r
1623 /*Largest packet, in bytes, including 12-byte RTP header*/
\r
1630 /*Longest packet duration, in milliseconds*/
\r
1637 /*32-bit payload type number, followed by rtpmap payload string */
\r
1642 char *payloadString;
\r
1655 GF_List *dataRates;
\r
1659 /*Apple extension*/
\r
1681 /*OMA (P)DCF extensions*/
\r
1685 u8 EncryptionMethod;
\r
1687 u64 PlaintextLength;
\r
1689 char *RightsIssuerURL;
\r
1690 char *TextualHeaders;
\r
1691 u32 TextualHeadersLen;
\r
1692 GF_List *ExtendedHeaders;
\r
1693 } GF_OMADRMCommonHeaderBox;
\r
1698 u8 GKEncryptionMethod;
\r
1702 } GF_OMADRMGroupIDBox;
\r
1708 } GF_OMADRMMutableInformationBox;
\r
1713 char TransactionID[16];
\r
1714 } GF_OMADRMTransactionTrackingBox;
\r
1721 } GF_OMADRMRightsObjectBox;
\r
1724 typedef struct __isma_format_box GF_OMADRMAUFormatBox;
\r
1726 typedef struct __oma_kms_box
\r
1729 GF_OMADRMCommonHeaderBox *hdr;
\r
1730 GF_OMADRMAUFormatBox *fmt;
\r
1731 } GF_OMADRMKMSBox;
\r
1736 Data Map (media storage) stuff
\r
1739 /*regular file IO*/
\r
1740 #define GF_ISOM_DATA_FILE 0x01
\r
1741 /*File Mapaing object, read-only mode on complete files (no download)*/
\r
1742 #define GF_ISOM_DATA_FILE_MAPPING 0x02
\r
1743 /*External file object. Needs implementation*/
\r
1744 #define GF_ISOM_DATA_FILE_EXTERN 0x03
\r
1746 /*Data Map modes*/
\r
1750 GF_ISOM_DATA_MAP_READ = 1,
\r
1752 GF_ISOM_DATA_MAP_WRITE = 2,
\r
1753 /*the following modes are just ways of signaling extended functionalities
\r
1754 edit mode, to make sure the file is here, set to GF_ISOM_DATA_MAP_READ afterwards*/
\r
1755 GF_ISOM_DATA_MAP_EDIT = 3,
\r
1756 /*read-only access to the movie file: we create a file mapping object
\r
1757 mode is set to GF_ISOM_DATA_MAP_READ afterwards*/
\r
1758 GF_ISOM_DATA_MAP_READ_ONLY = 4,
\r
1761 /*this is the DataHandler structure each data handler has its own bitstream*/
\r
1762 #define GF_ISOM_BASE_DATA_HANDLER \
\r
1768 typedef struct __tag_data_map
\r
1770 GF_ISOM_BASE_DATA_HANDLER
\r
1775 GF_ISOM_BASE_DATA_HANDLER
\r
1777 Bool last_acces_was_read;
\r
1778 #ifndef GPAC_READ_ONLY
\r
1783 /*file mapping handler. used if supported, only on read mode for complete files (not in file download)*/
\r
1786 GF_ISOM_BASE_DATA_HANDLER
\r
1791 } GF_FileMappingDataMap;
\r
1793 GF_Err gf_isom_datamap_new(const char *location, const char *parentPath, u8 mode, GF_DataMap **outDataMap);
\r
1794 void gf_isom_datamap_del(GF_DataMap *ptr);
\r
1795 GF_Err gf_isom_datamap_open(GF_MediaBox *minf, u32 dataRefIndex, u8 Edit);
\r
1796 void gf_isom_datamap_close(GF_MediaInformationBox *minf);
\r
1797 u32 gf_isom_datamap_get_data(GF_DataMap *map, char *buffer, u32 bufferLength, u64 Offset);
\r
1799 /*File-based data map*/
\r
1800 GF_DataMap *gf_isom_fdm_new(const char *sPath, u8 mode);
\r
1801 void gf_isom_fdm_del(GF_FileDataMap *ptr);
\r
1802 u32 gf_isom_fdm_get_data(GF_FileDataMap *ptr, char *buffer, u32 bufferLength, u64 fileOffset);
\r
1804 #ifndef GPAC_READ_ONLY
\r
1805 GF_DataMap *gf_isom_fdm_new_temp(const char *sTempPath);
\r
1808 /*file-mapping, read only*/
\r
1809 GF_DataMap *gf_isom_fmo_new(const char *sPath, u8 mode);
\r
1810 void gf_isom_fmo_del(GF_FileMappingDataMap *ptr);
\r
1811 u32 gf_isom_fmo_get_data(GF_FileMappingDataMap *ptr, char *buffer, u32 bufferLength, u64 fileOffset);
\r
1813 #ifndef GPAC_READ_ONLY
\r
1814 u64 gf_isom_datamap_get_offset(GF_DataMap *map);
\r
1815 GF_Err gf_isom_datamap_add_data(GF_DataMap *ptr, char *data, u32 dataSize);
\r
1823 /*time def for MP4/QT/MJ2K files*/
\r
1824 #define GF_ISOM_MAC_TIME_OFFSET 2082758400/*208284480 */
\r
1826 #ifndef GPAC_ISOM_NO_FRAGMENTS
\r
1827 #define GF_ISOM_FORMAT_FRAG_FLAGS(pad, sync, deg) ( ( (pad) << 17) | ( ( !(sync) ) << 16) | (deg) );
\r
1828 #define GF_ISOM_GET_FRAG_PAD(flag) ( (flag) >> 17) & 0x7
\r
1829 #define GF_ISOM_GET_FRAG_SYNC(flag) ( ! ( ( (flag) >> 16) & 0x1))
\r
1830 #define GF_ISOM_GET_FRAG_DEG(flag) (flag) & 0x7FFF
\r
1835 GF_ISOM_FRAG_WRITE_READY = 0x01,
\r
1836 GF_ISOM_FRAG_READ_DEBUG = 0x02,
\r
1839 /*this is our movie object*/
\r
1840 struct __tag_isom {
\r
1841 /*the last fatal error*/
\r
1843 /*the original filename*/
\r
1845 /*the original file in read/edit, and also used in fragments mode
\r
1846 once the first moov has been written
\r
1847 Nota: this API doesn't allow fragments BEFORE the MOOV in order
\r
1848 to make easily parsable files (note there could be some data (mdat) before
\r
1850 GF_DataMap *movieFileMap;
\r
1852 #ifndef GPAC_READ_ONLY
\r
1853 /*the final file name*/
\r
1855 /*the file where we store edited samples (for READ_WRITE and WRITE mode only)*/
\r
1856 GF_DataMap *editFileMap;
\r
1857 /*the interleaving time for dummy mode (in movie TimeScale)*/
\r
1858 u32 interleavingTime;
\r
1863 /*if true 3GPP text streams are read as MPEG-4 StreamingText*/
\r
1864 u8 convert_streaming_text;
\r
1867 /*main boxes for fast access*/
\r
1869 GF_MovieBox *moov;
\r
1870 /*our MDAT box (one and only one when we store the file)*/
\r
1871 GF_MediaDataBox *mdat;
\r
1872 /*file brand (since v2, NULL means mp4 v1)*/
\r
1873 GF_FileTypeBox *brand;
\r
1874 /*progressive download info*/
\r
1875 GF_ProgressiveDownloadBox *pdin;
\r
1876 /*meta box if any*/
\r
1879 #ifndef GPAC_ISOM_NO_FRAGMENTS
\r
1880 u32 FragmentsFlags, NextMoofNumber;
\r
1881 /*active fragment*/
\r
1882 GF_MovieFragmentBox *moof;
\r
1883 /*in WRITE mode, this is the current MDAT where data is written*/
\r
1884 /*in READ mode this is the last valid file position before a gf_isom_box_read failed*/
\r
1885 u64 current_top_box_start;
\r
1888 /*this contains ALL the root boxes excepts fragments*/
\r
1889 GF_List *TopBoxes;
\r
1891 /*default track for sync of MPEG4 streams - this is the first accessed stream without OCR info - only set in READ mode*/
\r
1892 s32 es_id_default_sync;
\r
1896 u64 gf_isom_get_mp4time();
\r
1897 /*set the last error of the file. if file is NULL, set the static error (used for IO errors*/
\r
1898 void gf_isom_set_last_error(GF_ISOFile *the_file, GF_Err error);
\r
1899 GF_Err gf_isom_parse_movie_boxes(GF_ISOFile *mov, u64 *bytesMissing);
\r
1900 GF_ISOFile *gf_isom_new_movie();
\r
1901 /*Movie and Track access functions*/
\r
1902 GF_TrackBox *gf_isom_get_track_from_file(GF_ISOFile *the_file, u32 trackNumber);
\r
1903 GF_TrackBox *gf_isom_get_track(GF_MovieBox *moov, u32 trackNumber);
\r
1904 GF_TrackBox *gf_isom_get_track_from_id(GF_MovieBox *moov, u32 trackID);
\r
1905 u32 gf_isom_get_tracknum_from_id(GF_MovieBox *moov, u32 trackID);
\r
1907 GF_ISOFile *gf_isom_open_file(const char *fileName, u32 OpenMode, const char *tmp_dir);
\r
1908 /*close and delete a movie*/
\r
1909 void gf_isom_delete_movie(GF_ISOFile *mov);
\r
1910 /*StreamDescription reconstruction Functions*/
\r
1911 GF_Err GetESD(GF_MovieBox *moov, u32 trackID, u32 StreamDescIndex, GF_ESD **outESD);
\r
1912 GF_Err GetESDForTime(GF_MovieBox *moov, u32 trackID, u64 CTS, GF_ESD **outESD);
\r
1913 GF_Err Media_GetSampleDesc(GF_MediaBox *mdia, u32 SampleDescIndex, GF_SampleEntryBox **out_entry, u32 *dataRefIndex);
\r
1914 GF_Err Media_GetSampleDescIndex(GF_MediaBox *mdia, u64 DTS, u32 *sampleDescIndex);
\r
1915 /*get esd for given sample desc -
\r
1916 @true_desc_only: if true doesn't emulate desc and returns native ESD,
\r
1917 otherwise emulates if needed/possible (TimedText) and return a hard copy of the desc
\r
1919 GF_Err Media_GetESD(GF_MediaBox *mdia, u32 sampleDescIndex, GF_ESD **esd, Bool true_desc_only);
\r
1920 Bool Track_IsMPEG4Stream(u32 HandlerType);
\r
1921 Bool IsMP4Description(u32 entryType);
\r
1922 /*Find a reference of a given type*/
\r
1923 GF_Err Track_FindRef(GF_TrackBox *trak, u32 ReferenceType, GF_TrackReferenceTypeBox **dpnd);
\r
1924 /*Time and sample*/
\r
1925 GF_Err GetMediaTime(GF_TrackBox *trak, u64 movieTime, u64 *MediaTime, s64 *SegmentStartTime, s64 *MediaOffset, u8 *useEdit);
\r
1926 GF_Err Media_GetSample(GF_MediaBox *mdia, u32 sampleNumber, GF_ISOSample **samp, u32 *sampleDescriptionIndex, Bool no_data, u64 *out_offset);
\r
1927 GF_Err Media_CheckDataEntry(GF_MediaBox *mdia, u32 dataEntryIndex);
\r
1928 GF_Err Media_FindSyncSample(GF_SampleTableBox *stbl, u32 searchFromTime, u32 *sampleNumber, u8 mode);
\r
1929 GF_Err Media_RewriteODFrame(GF_MediaBox *mdia, GF_ISOSample *sample);
\r
1930 GF_Err Media_FindDataRef(GF_DataReferenceBox *dref, char *URLname, char *URNname, u32 *dataRefIndex);
\r
1931 Bool Media_IsSelfContained(GF_MediaBox *mdia, u32 StreamDescIndex);
\r
1933 /*check the TimeToSample for the given time and return the Sample number
\r
1934 if the entry is not found, return the closest sampleNumber in prevSampleNumber and 0 in sampleNumber
\r
1935 if the DTS required is after all DTSs in the list, set prevSampleNumber and SampleNumber to 0
\r
1936 useCTS specifies that we're looking for a composition time
\r
1938 GF_Err findEntryForTime(GF_SampleTableBox *stbl, u64 DTS, u8 useCTS, u32 *sampleNumber, u32 *prevSampleNumber);
\r
1939 /*Reading of the sample tables*/
\r
1940 GF_Err stbl_GetSampleSize(GF_SampleSizeBox *stsz, u32 SampleNumber, u32 *Size);
\r
1941 GF_Err stbl_GetSampleCTS(GF_CompositionOffsetBox *ctts, u32 SampleNumber, u32 *CTSoffset);
\r
1942 GF_Err stbl_GetSampleDTS(GF_TimeToSampleBox *stts, u32 SampleNumber, u64 *DTS);
\r
1943 /*find a RAP or set the prev / next RAPs if vars are passed*/
\r
1944 GF_Err stbl_GetSampleRAP(GF_SyncSampleBox *stss, u32 SampleNumber, u8 *IsRAP, u32 *prevRAP, u32 *nextRAP);
\r
1945 GF_Err stbl_GetSampleInfos(GF_SampleTableBox *stbl, u32 sampleNumber, u64 *offset, u32 *chunkNumber, u32 *descIndex, u8 *isEdited);
\r
1946 GF_Err stbl_GetSampleShadow(GF_ShadowSyncBox *stsh, u32 *sampleNumber, u32 *syncNum);
\r
1947 GF_Err stbl_GetPaddingBits(GF_PaddingBitsBox *padb, u32 SampleNumber, u8 *PadBits);
\r
1948 u32 stbl_GetSampleFragmentCount(GF_SampleFragmentBox *stsf, u32 sampleNumber);
\r
1949 u32 stbl_GetSampleFragmentSize(GF_SampleFragmentBox *stsf, u32 sampleNumber, u32 FragmentIndex);
\r
1950 GF_Err stbl_GetSampleDepType(GF_SampleDependencyTypeBox *stbl, u32 SampleNumber, u32 *dependsOn, u32 *dependedOn, u32 *redundant);
\r
1952 /*unpack sample2chunk and chunk offset so that we have 1 sample per chunk (edition mode only)*/
\r
1953 GF_Err stbl_UnpackOffsets(GF_SampleTableBox *stbl);
\r
1954 GF_Err SetTrackDuration(GF_TrackBox *trak);
\r
1955 GF_Err Media_SetDuration(GF_TrackBox *trak);
\r
1957 /*rewrites 3GP samples desc as MPEG-4 ESD*/
\r
1958 GF_Err gf_isom_get_ttxt_esd(GF_MediaBox *mdia, GF_ESD **out_esd);
\r
1959 /*inserts TTU header - only used when conversion to StreamingText is on*/
\r
1960 GF_Err gf_isom_rewrite_text_sample(GF_ISOSample *samp, u32 sampleDescriptionIndex, u32 sample_dur);
\r
1962 GF_UserDataMap *udta_getEntry(GF_UserDataBox *ptr, u32 box_type, bin128 *uuid);
\r
1964 #ifndef GPAC_READ_ONLY
\r
1966 GF_Err FlushCaptureMode(GF_ISOFile *movie);
\r
1967 GF_Err CanAccessMovie(GF_ISOFile *movie, u32 Mode);
\r
1968 GF_ISOFile *gf_isom_create_movie(const char *fileName, u32 OpenMode, const char *tmp_dir);
\r
1969 void gf_isom_insert_moov(GF_ISOFile *file);
\r
1971 GF_Err WriteToFile(GF_ISOFile *movie);
\r
1972 GF_Err Track_SetStreamDescriptor(GF_TrackBox *trak, u32 StreamDescriptionIndex, u32 DataReferenceIndex, GF_ESD *esd, u32 *outStreamIndex);
\r
1973 u8 RequestTrack(GF_MovieBox *moov, u32 TrackID);
\r
1974 /*Track-Media setup*/
\r
1975 GF_Err NewMedia(GF_MediaBox **mdia, u32 MediaType, u32 TimeScale);
\r
1976 GF_Err Media_ParseODFrame(GF_MediaBox *mdia, GF_ISOSample *sample, GF_ISOSample **od_samp);
\r
1977 GF_Err Media_AddSample(GF_MediaBox *mdia, u64 data_offset, GF_ISOSample *sample, u32 StreamDescIndex, u32 syncShadowNumber);
\r
1978 GF_Err Media_CreateDataRef(GF_DataReferenceBox *dref, char *URLname, char *URNname, u32 *dataRefIndex);
\r
1979 /*update a media sample. ONLY in edit mode*/
\r
1980 GF_Err Media_UpdateSample(GF_MediaBox *mdia, u32 sampleNumber, GF_ISOSample *sample, Bool data_only);
\r
1981 GF_Err Media_UpdateSampleReference(GF_MediaBox *mdia, u32 sampleNumber, GF_ISOSample *sample, u64 data_offset);
\r
1982 /*addition in the sample tables*/
\r
1983 GF_Err stbl_AddDTS(GF_SampleTableBox *stbl, u64 DTS, u32 *sampleNumber, u32 LastAUDefDuration);
\r
1984 GF_Err stbl_AddCTS(GF_SampleTableBox *stbl, u32 sampleNumber, u32 CTSoffset);
\r
1985 GF_Err stbl_AddSize(GF_SampleSizeBox *stsz, u32 sampleNumber, u32 size);
\r
1986 GF_Err stbl_AddRAP(GF_SyncSampleBox *stss, u32 sampleNumber);
\r
1987 GF_Err stbl_AddShadow(GF_ShadowSyncBox *stsh, u32 sampleNumber, u32 shadowNumber);
\r
1988 GF_Err stbl_AddChunkOffset(GF_MediaBox *mdia, u32 sampleNumber, u32 StreamDescIndex, u64 offset);
\r
1989 /*NB - no add for padding, this is done only through SetPaddingBits*/
\r
1991 GF_Err stbl_AddSampleFragment(GF_SampleTableBox *stbl, u32 sampleNumber, u16 size);
\r
1993 /*update of the sample table
\r
1994 all these functions are called in edit and we always have 1 sample per chunk*/
\r
1995 GF_Err stbl_SetChunkOffset(GF_MediaBox *mdia, u32 sampleNumber, u64 offset);
\r
1996 GF_Err stbl_SetSampleCTS(GF_SampleTableBox *stbl, u32 sampleNumber, u32 offset);
\r
1997 GF_Err stbl_SetSampleSize(GF_SampleSizeBox *stsz, u32 SampleNumber, u32 size);
\r
1998 GF_Err stbl_SetSampleRAP(GF_SyncSampleBox *stss, u32 SampleNumber, u8 isRAP);
\r
1999 GF_Err stbl_SetSyncShadow(GF_ShadowSyncBox *stsh, u32 sampleNumber, u32 syncSample);
\r
2000 GF_Err stbl_SetPaddingBits(GF_SampleTableBox *stbl, u32 SampleNumber, u8 bits);
\r
2001 /*for adding fragmented samples*/
\r
2002 GF_Err stbl_SampleSizeAppend(GF_SampleSizeBox *stsz, u32 data_size);
\r
2003 /*writing of the final chunk info in edit mode*/
\r
2004 GF_Err stbl_SetChunkAndOffset(GF_SampleTableBox *stbl, u32 sampleNumber, u32 StreamDescIndex, GF_SampleToChunkBox *the_stsc, GF_Box **the_stco, u64 data_offset, u8 forceNewChunk);
\r
2005 /*EDIT LIST functions*/
\r
2006 GF_EdtsEntry *CreateEditEntry(u64 EditDuration, u64 MediaTime, u8 EditMode);
\r
2008 GF_Err stbl_SetRedundant(GF_SampleTableBox *stbl, u32 sampleNumber);
\r
2009 GF_Err stbl_AddRedundant(GF_SampleTableBox *stbl, u32 sampleNumber);
\r
2011 /*REMOVE functions*/
\r
2012 GF_Err stbl_RemoveDTS(GF_SampleTableBox *stbl, u32 sampleNumber, u32 LastAUDefDuration);
\r
2013 GF_Err stbl_RemoveCTS(GF_SampleTableBox *stbl, u32 sampleNumber);
\r
2014 GF_Err stbl_RemoveSize(GF_SampleSizeBox *stsz, u32 sampleNumber);
\r
2015 GF_Err stbl_RemoveChunk(GF_SampleTableBox *stbl, u32 sampleNumber);
\r
2016 GF_Err stbl_RemoveRAP(GF_SampleTableBox *stbl, u32 sampleNumber);
\r
2017 GF_Err stbl_RemoveShadow(GF_ShadowSyncBox *stsh, u32 sampleNumber);
\r
2018 GF_Err stbl_RemovePaddingBits(GF_SampleTableBox *stbl, u32 SampleNumber);
\r
2019 GF_Err stbl_RemoveSampleFragments(GF_SampleTableBox *stbl, u32 sampleNumber);
\r
2020 GF_Err stbl_RemoveRedundant(GF_SampleTableBox *stbl, u32 SampleNumber);
\r
2022 #ifndef GPAC_ISOM_NO_FRAGMENTS
\r
2023 GF_Err StoreFragment(GF_ISOFile *movie);
\r
2029 GF_Err GetNextMediaTime(GF_TrackBox *trak, u64 movieTime, u64 *OutMovieTime);
\r
2030 GF_Err GetPrevMediaTime(GF_TrackBox *trak, u64 movieTime, u64 *OutMovieTime);
\r
2032 Bool IsHintTrack(GF_TrackBox *trak);
\r
2033 Bool CheckHintFormat(GF_TrackBox *trak, u32 HintType);
\r
2034 u32 GetHintFormat(GF_TrackBox *trak);
\r
2037 /*locate a box by its type or UUID*/
\r
2038 GF_ItemListBox *gf_ismo_locate_box(GF_List *list, u32 boxType, bin128 UUID);
\r
2040 GF_Err moov_AddBox(GF_Box *ptr, GF_Box *a);
\r
2041 GF_Err tref_AddBox(GF_Box *ptr, GF_Box *a);
\r
2042 GF_Err trak_AddBox(GF_Box *ptr, GF_Box *a);
\r
2043 GF_Err mvex_AddBox(GF_Box *ptr, GF_Box *a);
\r
2044 GF_Err stsd_AddBox(GF_SampleDescriptionBox *ptr, GF_Box *a);
\r
2045 GF_Err hnti_AddBox(GF_HintTrackInfoBox *hnti, GF_Box *a);
\r
2046 GF_Err udta_AddBox(GF_UserDataBox *ptr, GF_Box *a);
\r
2047 GF_Err edts_AddBox(GF_Box *s, GF_Box *a);
\r
2048 GF_Err stdp_Read(GF_Box *s, GF_BitStream *bs);
\r
2049 GF_Err sdtp_Read(GF_Box *s, GF_BitStream *bs);
\r
2050 GF_Err dinf_AddBox(GF_Box *s, GF_Box *a);
\r
2051 GF_Err minf_AddBox(GF_Box *s, GF_Box *a);
\r
2052 GF_Err mdia_AddBox(GF_Box *s, GF_Box *a);
\r
2053 GF_Err stbl_AddBox(GF_SampleTableBox *ptr, GF_Box *a);
\r
2055 GF_Err AVC_UpdateESD(GF_MPEGVisualSampleEntryBox *avc, GF_ESD *esd);
\r
2056 void AVC_RewriteESDescriptor(GF_MPEGVisualSampleEntryBox *avc);
\r
2057 GF_Err reftype_AddRefTrack(GF_TrackReferenceTypeBox *ref, u32 trackID, u16 *outRefIndex);
\r
2064 /*the HintType for each protocol*/
\r
2067 GF_ISMO_HINT_RTP = 1,
\r
2068 /*not supported yet*/
\r
2069 GF_ISMO_MPEG2_TS = 2
\r
2072 /*****************************************************
\r
2074 *****************************************************/
\r
2076 #define GF_ISMO_BASE_DTE_ENTRY \
\r
2081 GF_ISMO_BASE_DTE_ENTRY
\r
2086 GF_ISMO_BASE_DTE_ENTRY
\r
2091 GF_ISMO_BASE_DTE_ENTRY
\r
2094 } GF_ImmediateDTE;
\r
2098 GF_ISMO_BASE_DTE_ENTRY
\r
2104 u16 samplesPerComp;
\r
2109 GF_ISMO_BASE_DTE_ENTRY
\r
2111 u32 streamDescIndex;
\r
2115 } GF_StreamDescDTE;
\r
2117 GF_GenericDTE *NewDTE(u8 type);
\r
2118 void DelDTE(GF_GenericDTE *dte);
\r
2119 GF_Err ReadDTE(GF_GenericDTE *dte, GF_BitStream *bs);
\r
2120 GF_Err WriteDTE(GF_GenericDTE *dte, GF_BitStream *bs);
\r
2121 GF_Err OffsetDTE(GF_GenericDTE *dte, u32 offset, u32 HintSampleNumber);
\r
2123 /*****************************************************
\r
2125 *****************************************************/
\r
2127 /*data cache when reading*/
\r
2128 typedef struct __tag_hint_data_cache
\r
2130 GF_ISOSample *samp;
\r
2131 GF_TrackBox *trak;
\r
2133 } GF_HintDataCache;
\r
2136 typedef struct __tag_hint_sample
\r
2138 /*used internally for future protocol support (write only)*/
\r
2142 GF_List *packetTable;
\r
2143 char *AdditionalData;
\r
2145 /*used internally for hinting*/
\r
2146 u64 TransmissionTime;
\r
2147 /*for read only, used to store samples fetched while building packets*/
\r
2148 GF_List *sample_cache;
\r
2151 GF_HintSample *gf_isom_hint_sample_new(u32 ProtocolType);
\r
2152 void gf_isom_hint_sample_del(GF_HintSample *ptr);
\r
2153 GF_Err gf_isom_hint_sample_read(GF_HintSample *ptr, GF_BitStream *bs, u32 sampleSize);
\r
2154 GF_Err gf_isom_hint_sample_write(GF_HintSample *ptr, GF_BitStream *bs);
\r
2155 u32 gf_isom_hint_sample_size(GF_HintSample *ptr);
\r
2157 /*****************************************************
\r
2158 Hint Packets (generic packet for future protocol support)
\r
2159 *****************************************************/
\r
2160 #define GF_ISOM_BASE_PACKET \
\r
2161 s32 relativeTransTime;
\r
2166 GF_ISOM_BASE_PACKET
\r
2169 GF_HintPacket *gf_isom_hint_pck_new(u8 HintType);
\r
2170 void gf_isom_hint_pck_del(u8 HintType, GF_HintPacket *ptr);
\r
2171 GF_Err gf_isom_hint_pck_read(u8 HintType, GF_HintPacket *ptr, GF_BitStream *bs);
\r
2172 GF_Err gf_isom_hint_pck_write(u8 HintType, GF_HintPacket *ptr, GF_BitStream *bs);
\r
2173 u32 gf_isom_hint_pck_size(u8 HintType, GF_HintPacket *ptr);
\r
2174 GF_Err gf_isom_hint_pck_offset(u8 HintType, GF_HintPacket *ptr, u32 offset, u32 HintSampleNumber);
\r
2175 GF_Err gf_isom_hint_pck_add_dte(u8 HintType, GF_HintPacket *ptr, GF_GenericDTE *dte, u8 AtBegin);
\r
2176 /*get the size of the packet AS RECONSTRUCTED BY THE SERVER (without CSRC)*/
\r
2177 u32 gf_isom_hint_pck_length(u8 HintType, GF_HintPacket *ptr);
\r
2179 /*the RTP packet*/
\r
2182 GF_ISOM_BASE_PACKET
\r
2190 u16 SequenceNumber;
\r
2194 /*ExtraInfos TLVs - not really used */
\r
2196 /*DataTable - contains the DTEs...*/
\r
2197 GF_List *DataTable;
\r
2200 GF_RTPPacket *gf_isom_hint_rtp_new();
\r
2201 void gf_isom_hint_rtp_del(GF_RTPPacket *ptr);
\r
2202 GF_Err gf_isom_hint_rtp_read(GF_RTPPacket *ptr, GF_BitStream *bs);
\r
2203 GF_Err gf_isom_hint_rtp_write(GF_RTPPacket *ptr, GF_BitStream *bs);
\r
2204 u32 gf_isom_hint_rtp_size(GF_RTPPacket *ptr);
\r
2205 GF_Err gf_isom_hint_rtp_offset(GF_RTPPacket *ptr, u32 offset, u32 HintSampleNumber);
\r
2206 u32 gf_isom_hint_rtp_length(GF_RTPPacket *ptr);
\r
2210 struct _3gpp_text_sample
\r
2215 GF_TextStyleBox *styles;
\r
2216 /*at most one of these*/
\r
2217 GF_TextHighlightColorBox *highlight_color;
\r
2218 GF_TextScrollDelayBox *scroll_delay;
\r
2219 GF_TextBoxBox *box;
\r
2220 GF_TextWrapBox *wrap;
\r
2223 GF_TextKaraokeBox *cur_karaoke;
\r
2226 GF_TextSample *gf_isom_parse_texte_sample(GF_BitStream *bs);
\r
2227 GF_TextSample *gf_isom_parse_texte_sample_from_data(char *data, u32 dataLength);
\r
2232 these are exported just in case, there should never be needed outside the lib
\r
2235 GF_Box *reftype_New();
\r
2236 GF_Box *free_New();
\r
2237 GF_Box *mdat_New();
\r
2238 GF_Box *moov_New();
\r
2239 GF_Box *mvhd_New();
\r
2240 GF_Box *mdhd_New();
\r
2241 GF_Box *vmhd_New();
\r
2242 GF_Box *smhd_New();
\r
2243 GF_Box *hmhd_New();
\r
2244 GF_Box *nmhd_New();
\r
2245 GF_Box *stbl_New();
\r
2246 GF_Box *dinf_New();
\r
2247 GF_Box *url_New();
\r
2248 GF_Box *urn_New();
\r
2249 GF_Box *cprt_New();
\r
2250 GF_Box *chpl_New();
\r
2251 GF_Box *hdlr_New();
\r
2252 GF_Box *iods_New();
\r
2253 GF_Box *trak_New();
\r
2254 GF_Box *mp4s_New();
\r
2255 GF_Box *mp4v_New();
\r
2256 GF_Box *mp4a_New();
\r
2257 GF_Box *edts_New();
\r
2258 GF_Box *udta_New();
\r
2259 GF_Box *dref_New();
\r
2260 GF_Box *stsd_New();
\r
2261 GF_Box *stts_New();
\r
2262 GF_Box *ctts_New();
\r
2263 GF_Box *stsh_New();
\r
2264 GF_Box *elst_New();
\r
2265 GF_Box *stsc_New();
\r
2266 GF_Box *stsz_New();
\r
2267 GF_Box *stco_New();
\r
2268 GF_Box *stss_New();
\r
2269 GF_Box *stdp_New();
\r
2270 GF_Box *sdtp_New();
\r
2271 GF_Box *co64_New();
\r
2272 GF_Box *esds_New();
\r
2273 GF_Box *minf_New();
\r
2274 GF_Box *tkhd_New();
\r
2275 GF_Box *tref_New();
\r
2276 GF_Box *mdia_New();
\r
2277 GF_Box *defa_New();
\r
2278 GF_Box *uuid_New();
\r
2279 GF_Box *void_New();
\r
2280 GF_Box *stsf_New();
\r
2281 GF_Box *gnrm_New();
\r
2282 GF_Box *gnrv_New();
\r
2283 GF_Box *gnra_New();
\r
2284 GF_Box *pdin_New();
\r
2286 void reftype_del(GF_Box *);
\r
2287 void free_del(GF_Box *);
\r
2288 void mdat_del(GF_Box *);
\r
2289 void moov_del(GF_Box *);
\r
2290 void mvhd_del(GF_Box *);
\r
2291 void mdhd_del(GF_Box *);
\r
2292 void vmhd_del(GF_Box *);
\r
2293 void smhd_del(GF_Box *);
\r
2294 void hmhd_del(GF_Box *);
\r
2295 void nmhd_del(GF_Box *);
\r
2296 void stbl_del(GF_Box *);
\r
2297 void dinf_del(GF_Box *);
\r
2298 void url_del(GF_Box *);
\r
2299 void urn_del(GF_Box *);
\r
2300 void chpl_del(GF_Box *);
\r
2301 void cprt_del(GF_Box *);
\r
2302 void hdlr_del(GF_Box *);
\r
2303 void iods_del(GF_Box *);
\r
2304 void trak_del(GF_Box *);
\r
2305 void mp4s_del(GF_Box *);
\r
2306 void mp4v_del(GF_Box *);
\r
2307 void mp4a_del(GF_Box *);
\r
2308 void edts_del(GF_Box *);
\r
2309 void udta_del(GF_Box *);
\r
2310 void dref_del(GF_Box *);
\r
2311 void stsd_del(GF_Box *);
\r
2312 void stts_del(GF_Box *);
\r
2313 void ctts_del(GF_Box *);
\r
2314 void stsh_del(GF_Box *);
\r
2315 void elst_del(GF_Box *);
\r
2316 void stsc_del(GF_Box *);
\r
2317 void stsz_del(GF_Box *);
\r
2318 void stco_del(GF_Box *);
\r
2319 void stss_del(GF_Box *);
\r
2320 void stdp_del(GF_Box *);
\r
2321 void sdtp_del(GF_Box *);
\r
2322 void co64_del(GF_Box *);
\r
2323 void esds_del(GF_Box *);
\r
2324 void minf_del(GF_Box *);
\r
2325 void tkhd_del(GF_Box *);
\r
2326 void tref_del(GF_Box *);
\r
2327 void mdia_del(GF_Box *);
\r
2328 void defa_del(GF_Box *);
\r
2329 void uuid_del(GF_Box *);
\r
2330 void void_del(GF_Box *);
\r
2331 void stsf_del(GF_Box *);
\r
2332 void gnrm_del(GF_Box *);
\r
2333 void gnrv_del(GF_Box *);
\r
2334 void gnra_del(GF_Box *);
\r
2335 void pdin_del(GF_Box *);
\r
2337 GF_Err reftype_Write(GF_Box *s, GF_BitStream *bs);
\r
2338 GF_Err free_Write(GF_Box *s, GF_BitStream *bs);
\r
2339 GF_Err mdat_Write(GF_Box *s, GF_BitStream *bs);
\r
2340 GF_Err moov_Write(GF_Box *s, GF_BitStream *bs);
\r
2341 GF_Err mvhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2342 GF_Err mdhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2343 GF_Err vmhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2344 GF_Err smhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2345 GF_Err hmhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2346 GF_Err nmhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2347 GF_Err stbl_Write(GF_Box *s, GF_BitStream *bs);
\r
2348 GF_Err dinf_Write(GF_Box *s, GF_BitStream *bs);
\r
2349 GF_Err url_Write(GF_Box *s, GF_BitStream *bs);
\r
2350 GF_Err urn_Write(GF_Box *s, GF_BitStream *bs);
\r
2351 GF_Err chpl_Write(GF_Box *s, GF_BitStream *bs);
\r
2352 GF_Err cprt_Write(GF_Box *s, GF_BitStream *bs);
\r
2353 GF_Err hdlr_Write(GF_Box *s, GF_BitStream *bs);
\r
2354 GF_Err iods_Write(GF_Box *s, GF_BitStream *bs);
\r
2355 GF_Err trak_Write(GF_Box *s, GF_BitStream *bs);
\r
2356 GF_Err mp4s_Write(GF_Box *s, GF_BitStream *bs);
\r
2357 GF_Err mp4v_Write(GF_Box *s, GF_BitStream *bs);
\r
2358 GF_Err mp4a_Write(GF_Box *s, GF_BitStream *bs);
\r
2359 GF_Err edts_Write(GF_Box *s, GF_BitStream *bs);
\r
2360 GF_Err udta_Write(GF_Box *s, GF_BitStream *bs);
\r
2361 GF_Err dref_Write(GF_Box *s, GF_BitStream *bs);
\r
2362 GF_Err stsd_Write(GF_Box *s, GF_BitStream *bs);
\r
2363 GF_Err stts_Write(GF_Box *s, GF_BitStream *bs);
\r
2364 GF_Err ctts_Write(GF_Box *s, GF_BitStream *bs);
\r
2365 GF_Err stsh_Write(GF_Box *s, GF_BitStream *bs);
\r
2366 GF_Err elst_Write(GF_Box *s, GF_BitStream *bs);
\r
2367 GF_Err stsc_Write(GF_Box *s, GF_BitStream *bs);
\r
2368 GF_Err stsz_Write(GF_Box *s, GF_BitStream *bs);
\r
2369 GF_Err stco_Write(GF_Box *s, GF_BitStream *bs);
\r
2370 GF_Err stss_Write(GF_Box *s, GF_BitStream *bs);
\r
2371 GF_Err stdp_Write(GF_Box *s, GF_BitStream *bs);
\r
2372 GF_Err sdtp_Write(GF_Box *s, GF_BitStream *bs);
\r
2373 GF_Err co64_Write(GF_Box *s, GF_BitStream *bs);
\r
2374 GF_Err esds_Write(GF_Box *s, GF_BitStream *bs);
\r
2375 GF_Err minf_Write(GF_Box *s, GF_BitStream *bs);
\r
2376 GF_Err tkhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2377 GF_Err tref_Write(GF_Box *s, GF_BitStream *bs);
\r
2378 GF_Err mdia_Write(GF_Box *s, GF_BitStream *bs);
\r
2379 GF_Err defa_Write(GF_Box *s, GF_BitStream *bs);
\r
2380 GF_Err uuid_Write(GF_Box *s, GF_BitStream *bs);
\r
2381 GF_Err void_Write(GF_Box *s, GF_BitStream *bs);
\r
2382 GF_Err stsf_Write(GF_Box *s, GF_BitStream *bs);
\r
2383 GF_Err gnrm_Write(GF_Box *s, GF_BitStream *bs);
\r
2384 GF_Err gnrv_Write(GF_Box *s, GF_BitStream *bs);
\r
2385 GF_Err gnra_Write(GF_Box *s, GF_BitStream *bs);
\r
2386 GF_Err pdin_Write(GF_Box *s, GF_BitStream *bs);
\r
2388 GF_Err reftype_Size(GF_Box *);
\r
2389 GF_Err free_Size(GF_Box *);
\r
2390 GF_Err mdat_Size(GF_Box *);
\r
2391 GF_Err moov_Size(GF_Box *);
\r
2392 GF_Err mvhd_Size(GF_Box *);
\r
2393 GF_Err mdhd_Size(GF_Box *);
\r
2394 GF_Err vmhd_Size(GF_Box *);
\r
2395 GF_Err smhd_Size(GF_Box *);
\r
2396 GF_Err hmhd_Size(GF_Box *);
\r
2397 GF_Err nmhd_Size(GF_Box *);
\r
2398 GF_Err stbl_Size(GF_Box *);
\r
2399 GF_Err dinf_Size(GF_Box *);
\r
2400 GF_Err url_Size(GF_Box *);
\r
2401 GF_Err urn_Size(GF_Box *);
\r
2402 GF_Err chpl_Size(GF_Box *);
\r
2403 GF_Err cprt_Size(GF_Box *);
\r
2404 GF_Err hdlr_Size(GF_Box *);
\r
2405 GF_Err iods_Size(GF_Box *);
\r
2406 GF_Err trak_Size(GF_Box *);
\r
2407 GF_Err mp4s_Size(GF_Box *);
\r
2408 GF_Err mp4v_Size(GF_Box *);
\r
2409 GF_Err mp4a_Size(GF_Box *);
\r
2410 GF_Err edts_Size(GF_Box *);
\r
2411 GF_Err udta_Size(GF_Box *);
\r
2412 GF_Err dref_Size(GF_Box *);
\r
2413 GF_Err stsd_Size(GF_Box *);
\r
2414 GF_Err stts_Size(GF_Box *);
\r
2415 GF_Err ctts_Size(GF_Box *);
\r
2416 GF_Err stsh_Size(GF_Box *);
\r
2417 GF_Err elst_Size(GF_Box *);
\r
2418 GF_Err stsc_Size(GF_Box *);
\r
2419 GF_Err stsz_Size(GF_Box *);
\r
2420 GF_Err stco_Size(GF_Box *);
\r
2421 GF_Err stss_Size(GF_Box *);
\r
2422 GF_Err stdp_Size(GF_Box *);
\r
2423 GF_Err sdtp_Size(GF_Box *);
\r
2424 GF_Err co64_Size(GF_Box *);
\r
2425 GF_Err esds_Size(GF_Box *);
\r
2426 GF_Err minf_Size(GF_Box *);
\r
2427 GF_Err tkhd_Size(GF_Box *);
\r
2428 GF_Err tref_Size(GF_Box *);
\r
2429 GF_Err mdia_Size(GF_Box *);
\r
2430 GF_Err defa_Size(GF_Box *);
\r
2431 GF_Err uuid_Size(GF_Box *);
\r
2432 GF_Err void_Size(GF_Box *);
\r
2433 GF_Err stsf_Size(GF_Box *);
\r
2434 GF_Err gnrm_Size(GF_Box *);
\r
2435 GF_Err gnrv_Size(GF_Box *);
\r
2436 GF_Err gnra_Size(GF_Box *);
\r
2437 GF_Err pdin_Size(GF_Box *);
\r
2439 GF_Err reftype_Read(GF_Box *s, GF_BitStream *bs);
\r
2440 GF_Err free_Read(GF_Box *s, GF_BitStream *bs);
\r
2441 GF_Err mdat_Read(GF_Box *s, GF_BitStream *bs);
\r
2442 GF_Err moov_Read(GF_Box *s, GF_BitStream *bs);
\r
2443 GF_Err mvhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2444 GF_Err mdhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2445 GF_Err vmhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2446 GF_Err smhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2447 GF_Err hmhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2448 GF_Err nmhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2449 GF_Err stbl_Read(GF_Box *s, GF_BitStream *bs);
\r
2450 GF_Err dinf_Read(GF_Box *s, GF_BitStream *bs);
\r
2451 GF_Err url_Read(GF_Box *s, GF_BitStream *bs);
\r
2452 GF_Err urn_Read(GF_Box *s, GF_BitStream *bs);
\r
2453 GF_Err chpl_Read(GF_Box *s, GF_BitStream *bs);
\r
2454 GF_Err cprt_Read(GF_Box *s, GF_BitStream *bs);
\r
2455 GF_Err hdlr_Read(GF_Box *s, GF_BitStream *bs);
\r
2456 GF_Err iods_Read(GF_Box *s, GF_BitStream *bs);
\r
2457 GF_Err trak_Read(GF_Box *s, GF_BitStream *bs);
\r
2458 GF_Err mp4s_Read(GF_Box *s, GF_BitStream *bs);
\r
2459 GF_Err mp4v_Read(GF_Box *s, GF_BitStream *bs);
\r
2460 GF_Err mp4a_Read(GF_Box *s, GF_BitStream *bs);
\r
2461 GF_Err edts_Read(GF_Box *s, GF_BitStream *bs);
\r
2462 GF_Err udta_Read(GF_Box *s, GF_BitStream *bs);
\r
2463 GF_Err dref_Read(GF_Box *s, GF_BitStream *bs);
\r
2464 GF_Err stsd_Read(GF_Box *s, GF_BitStream *bs);
\r
2465 GF_Err stts_Read(GF_Box *s, GF_BitStream *bs);
\r
2466 GF_Err ctts_Read(GF_Box *s, GF_BitStream *bs);
\r
2467 GF_Err stsh_Read(GF_Box *s, GF_BitStream *bs);
\r
2468 GF_Err elst_Read(GF_Box *s, GF_BitStream *bs);
\r
2469 GF_Err stsc_Read(GF_Box *s, GF_BitStream *bs);
\r
2470 GF_Err stsz_Read(GF_Box *s, GF_BitStream *bs);
\r
2471 GF_Err stco_Read(GF_Box *s, GF_BitStream *bs);
\r
2472 GF_Err stss_Read(GF_Box *s, GF_BitStream *bs);
\r
2473 GF_Err stdp_Read(GF_Box *s, GF_BitStream *bs);
\r
2474 GF_Err sdtp_Read(GF_Box *s, GF_BitStream *bs);
\r
2475 GF_Err co64_Read(GF_Box *s, GF_BitStream *bs);
\r
2476 GF_Err esds_Read(GF_Box *s, GF_BitStream *bs);
\r
2477 GF_Err minf_Read(GF_Box *s, GF_BitStream *bs);
\r
2478 GF_Err tkhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2479 GF_Err tref_Read(GF_Box *s, GF_BitStream *bs);
\r
2480 GF_Err mdia_Read(GF_Box *s, GF_BitStream *bs);
\r
2481 GF_Err defa_Read(GF_Box *s, GF_BitStream *bs);
\r
2482 GF_Err uuid_Read(GF_Box *s, GF_BitStream *bs);
\r
2483 GF_Err void_Read(GF_Box *s, GF_BitStream *bs);
\r
2484 GF_Err stsf_Read(GF_Box *s, GF_BitStream *bs);
\r
2485 GF_Err pdin_Read(GF_Box *s, GF_BitStream *bs);
\r
2488 GF_Box *hinf_New();
\r
2489 GF_Box *trpy_New();
\r
2490 GF_Box *totl_New();
\r
2491 GF_Box *nump_New();
\r
2492 GF_Box *npck_New();
\r
2493 GF_Box *tpyl_New();
\r
2494 GF_Box *tpay_New();
\r
2495 GF_Box *maxr_New();
\r
2496 GF_Box *dmed_New();
\r
2497 GF_Box *dimm_New();
\r
2498 GF_Box *drep_New();
\r
2499 GF_Box *tmin_New();
\r
2500 GF_Box *tmax_New();
\r
2501 GF_Box *pmax_New();
\r
2502 GF_Box *dmax_New();
\r
2503 GF_Box *payt_New();
\r
2504 GF_Box *name_New();
\r
2505 GF_Box *rely_New();
\r
2506 GF_Box *snro_New();
\r
2507 GF_Box *tims_New();
\r
2508 GF_Box *tsro_New();
\r
2509 GF_Box *ghnt_New();
\r
2510 GF_Box *hnti_New();
\r
2511 GF_Box *sdp_New();
\r
2512 GF_Box *rtpo_New();
\r
2514 void hinf_del(GF_Box *s);
\r
2515 void trpy_del(GF_Box *s);
\r
2516 void totl_del(GF_Box *s);
\r
2517 void nump_del(GF_Box *s);
\r
2518 void npck_del(GF_Box *s);
\r
2519 void tpyl_del(GF_Box *s);
\r
2520 void tpay_del(GF_Box *s);
\r
2521 void maxr_del(GF_Box *s);
\r
2522 void dmed_del(GF_Box *s);
\r
2523 void dimm_del(GF_Box *s);
\r
2524 void drep_del(GF_Box *s);
\r
2525 void tmin_del(GF_Box *s);
\r
2526 void tmax_del(GF_Box *s);
\r
2527 void pmax_del(GF_Box *s);
\r
2528 void dmax_del(GF_Box *s);
\r
2529 void payt_del(GF_Box *s);
\r
2530 void name_del(GF_Box *s);
\r
2531 void rely_del(GF_Box *s);
\r
2532 void snro_del(GF_Box *s);
\r
2533 void tims_del(GF_Box *s);
\r
2534 void tsro_del(GF_Box *s);
\r
2535 void ghnt_del(GF_Box *s);
\r
2536 void hnti_del(GF_Box *a);
\r
2537 void sdp_del(GF_Box *a);
\r
2538 void rtpo_del(GF_Box *s);
\r
2540 GF_Err hinf_Read(GF_Box *s, GF_BitStream *bs);
\r
2541 GF_Err trpy_Read(GF_Box *s, GF_BitStream *bs);
\r
2542 GF_Err totl_Read(GF_Box *s, GF_BitStream *bs);
\r
2543 GF_Err nump_Read(GF_Box *s, GF_BitStream *bs);
\r
2544 GF_Err npck_Read(GF_Box *s, GF_BitStream *bs);
\r
2545 GF_Err tpyl_Read(GF_Box *s, GF_BitStream *bs);
\r
2546 GF_Err tpay_Read(GF_Box *s, GF_BitStream *bs);
\r
2547 GF_Err maxr_Read(GF_Box *s, GF_BitStream *bs);
\r
2548 GF_Err dmed_Read(GF_Box *s, GF_BitStream *bs);
\r
2549 GF_Err dimm_Read(GF_Box *s, GF_BitStream *bs);
\r
2550 GF_Err drep_Read(GF_Box *s, GF_BitStream *bs);
\r
2551 GF_Err tmin_Read(GF_Box *s, GF_BitStream *bs);
\r
2552 GF_Err tmax_Read(GF_Box *s, GF_BitStream *bs);
\r
2553 GF_Err pmax_Read(GF_Box *s, GF_BitStream *bs);
\r
2554 GF_Err dmax_Read(GF_Box *s, GF_BitStream *bs);
\r
2555 GF_Err payt_Read(GF_Box *s, GF_BitStream *bs);
\r
2556 GF_Err name_Read(GF_Box *s, GF_BitStream *bs);
\r
2557 GF_Err rely_Read(GF_Box *s, GF_BitStream *bs);
\r
2558 GF_Err snro_Read(GF_Box *s, GF_BitStream *bs);
\r
2559 GF_Err tims_Read(GF_Box *s, GF_BitStream *bs);
\r
2560 GF_Err tsro_Read(GF_Box *s, GF_BitStream *bs);
\r
2561 GF_Err ghnt_Read(GF_Box *s, GF_BitStream *bs);
\r
2562 GF_Err hnti_Read(GF_Box *s, GF_BitStream *bs);
\r
2563 GF_Err sdp_Read(GF_Box *s, GF_BitStream *bs);
\r
2564 GF_Err rtpo_Read(GF_Box *s, GF_BitStream *bs);
\r
2566 GF_Err hinf_Write(GF_Box *s, GF_BitStream *bs);
\r
2567 GF_Err trpy_Write(GF_Box *s, GF_BitStream *bs);
\r
2568 GF_Err totl_Write(GF_Box *s, GF_BitStream *bs);
\r
2569 GF_Err nump_Write(GF_Box *s, GF_BitStream *bs);
\r
2570 GF_Err npck_Write(GF_Box *s, GF_BitStream *bs);
\r
2571 GF_Err tpyl_Write(GF_Box *s, GF_BitStream *bs);
\r
2572 GF_Err tpay_Write(GF_Box *s, GF_BitStream *bs);
\r
2573 GF_Err maxr_Write(GF_Box *s, GF_BitStream *bs);
\r
2574 GF_Err dmed_Write(GF_Box *s, GF_BitStream *bs);
\r
2575 GF_Err dimm_Write(GF_Box *s, GF_BitStream *bs);
\r
2576 GF_Err drep_Write(GF_Box *s, GF_BitStream *bs);
\r
2577 GF_Err tmin_Write(GF_Box *s, GF_BitStream *bs);
\r
2578 GF_Err tmax_Write(GF_Box *s, GF_BitStream *bs);
\r
2579 GF_Err pmax_Write(GF_Box *s, GF_BitStream *bs);
\r
2580 GF_Err dmax_Write(GF_Box *s, GF_BitStream *bs);
\r
2581 GF_Err payt_Write(GF_Box *s, GF_BitStream *bs);
\r
2582 GF_Err name_Write(GF_Box *s, GF_BitStream *bs);
\r
2583 GF_Err rely_Write(GF_Box *s, GF_BitStream *bs);
\r
2584 GF_Err snro_Write(GF_Box *s, GF_BitStream *bs);
\r
2585 GF_Err tims_Write(GF_Box *s, GF_BitStream *bs);
\r
2586 GF_Err tsro_Write(GF_Box *s, GF_BitStream *bs);
\r
2587 GF_Err ghnt_Write(GF_Box *s, GF_BitStream *bs);
\r
2588 GF_Err hnti_Write(GF_Box *s, GF_BitStream *bs);
\r
2589 GF_Err sdp_Write(GF_Box *s, GF_BitStream *bs);
\r
2590 GF_Err rtpo_Write(GF_Box *s, GF_BitStream *bs);
\r
2592 GF_Err hinf_Size(GF_Box *s);
\r
2593 GF_Err trpy_Size(GF_Box *s);
\r
2594 GF_Err totl_Size(GF_Box *s);
\r
2595 GF_Err nump_Size(GF_Box *s);
\r
2596 GF_Err npck_Size(GF_Box *s);
\r
2597 GF_Err tpyl_Size(GF_Box *s);
\r
2598 GF_Err tpay_Size(GF_Box *s);
\r
2599 GF_Err maxr_Size(GF_Box *s);
\r
2600 GF_Err dmed_Size(GF_Box *s);
\r
2601 GF_Err dimm_Size(GF_Box *s);
\r
2602 GF_Err drep_Size(GF_Box *s);
\r
2603 GF_Err tmin_Size(GF_Box *s);
\r
2604 GF_Err tmax_Size(GF_Box *s);
\r
2605 GF_Err pmax_Size(GF_Box *s);
\r
2606 GF_Err dmax_Size(GF_Box *s);
\r
2607 GF_Err payt_Size(GF_Box *s);
\r
2608 GF_Err name_Size(GF_Box *s);
\r
2609 GF_Err rely_Size(GF_Box *s);
\r
2610 GF_Err snro_Size(GF_Box *s);
\r
2611 GF_Err tims_Size(GF_Box *s);
\r
2612 GF_Err tsro_Size(GF_Box *s);
\r
2613 GF_Err ghnt_Size(GF_Box *s);
\r
2614 GF_Err hnti_Size(GF_Box *s);
\r
2615 GF_Err sdp_Size(GF_Box *s);
\r
2616 GF_Err rtpo_Size(GF_Box *s);
\r
2619 GF_Box *ftyp_New();
\r
2620 void ftyp_del(GF_Box *s);
\r
2621 GF_Err ftyp_Read(GF_Box *s,GF_BitStream *bs);
\r
2622 GF_Err ftyp_Write(GF_Box *s, GF_BitStream *bs);
\r
2623 GF_Err ftyp_Size(GF_Box *s);
\r
2625 GF_Box *padb_New();
\r
2626 void padb_del(GF_Box *s);
\r
2627 GF_Err padb_Read(GF_Box *s, GF_BitStream *bs);
\r
2628 GF_Err padb_Write(GF_Box *s, GF_BitStream *bs);
\r
2629 GF_Err padb_Size(GF_Box *s);
\r
2631 GF_Box *gppa_New(u32 type);
\r
2632 GF_Box *gppv_New(u32 type);
\r
2633 GF_Box *gppc_New(u32 type);
\r
2634 void gppa_del(GF_Box *s);
\r
2635 void gppv_del(GF_Box *s);
\r
2636 void gppc_del(GF_Box *s);
\r
2637 GF_Err gppa_Read(GF_Box *s, GF_BitStream *bs);
\r
2638 GF_Err gppv_Read(GF_Box *s, GF_BitStream *bs);
\r
2639 GF_Err gppc_Read(GF_Box *s, GF_BitStream *bs);
\r
2640 #ifndef GPAC_READ_ONLY
\r
2641 GF_Err gppa_Write(GF_Box *s, GF_BitStream *bs);
\r
2642 GF_Err gppv_Write(GF_Box *s, GF_BitStream *bs);
\r
2643 GF_Err gppc_Write(GF_Box *s, GF_BitStream *bs);
\r
2644 GF_Err gppa_Size(GF_Box *s);
\r
2645 GF_Err gppv_Size(GF_Box *s);
\r
2646 GF_Err gppc_Size(GF_Box *s);
\r
2650 #ifndef GPAC_ISOM_NO_FRAGMENTS
\r
2651 GF_Box *mvex_New();
\r
2652 GF_Box *trex_New();
\r
2653 GF_Box *moof_New();
\r
2654 GF_Box *mfhd_New();
\r
2655 GF_Box *traf_New();
\r
2656 GF_Box *tfhd_New();
\r
2657 GF_Box *trun_New();
\r
2659 void mvex_del(GF_Box *s);
\r
2660 void trex_del(GF_Box *s);
\r
2661 void moof_del(GF_Box *s);
\r
2662 void mfhd_del(GF_Box *s);
\r
2663 void traf_del(GF_Box *s);
\r
2664 void tfhd_del(GF_Box *s);
\r
2665 void trun_del(GF_Box *s);
\r
2667 GF_Err mvex_Read(GF_Box *s, GF_BitStream *bs);
\r
2668 GF_Err trex_Read(GF_Box *s, GF_BitStream *bs);
\r
2669 GF_Err moof_Read(GF_Box *s, GF_BitStream *bs);
\r
2670 GF_Err mfhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2671 GF_Err traf_Read(GF_Box *s, GF_BitStream *bs);
\r
2672 GF_Err tfhd_Read(GF_Box *s, GF_BitStream *bs);
\r
2673 GF_Err trun_Read(GF_Box *s, GF_BitStream *bs);
\r
2675 GF_Err mvex_Write(GF_Box *s, GF_BitStream *bs);
\r
2676 GF_Err trex_Write(GF_Box *s, GF_BitStream *bs);
\r
2677 GF_Err moof_Write(GF_Box *s, GF_BitStream *bs);
\r
2678 GF_Err mfhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2679 GF_Err traf_Write(GF_Box *s, GF_BitStream *bs);
\r
2680 GF_Err tfhd_Write(GF_Box *s, GF_BitStream *bs);
\r
2681 GF_Err trun_Write(GF_Box *s, GF_BitStream *bs);
\r
2683 GF_Err mvex_Size(GF_Box *s);
\r
2684 GF_Err trex_Size(GF_Box *s);
\r
2685 GF_Err moof_Size(GF_Box *s);
\r
2686 GF_Err mfhd_Size(GF_Box *s);
\r
2687 GF_Err traf_Size(GF_Box *s);
\r
2688 GF_Err tfhd_Size(GF_Box *s);
\r
2689 GF_Err trun_Size(GF_Box *s);
\r
2692 GF_Box *mehd_New();
\r
2693 void mehd_del(GF_Box *s);
\r
2694 GF_Err mehd_Read(GF_Box *s, GF_BitStream *bs);
\r
2695 GF_Err mehd_Write(GF_Box *s, GF_BitStream *bs);
\r
2696 GF_Err mehd_Size(GF_Box *s);
\r
2701 GF_Box *avcc_New();
\r
2702 void avcc_del(GF_Box *s);
\r
2703 GF_Err avcc_Read(GF_Box *s, GF_BitStream *bs);
\r
2704 GF_Err avcc_Write(GF_Box *s, GF_BitStream *bs);
\r
2705 GF_Err avcc_Size(GF_Box *s);
\r
2707 GF_Box *avc1_New();
\r
2709 GF_Box *m4ds_New();
\r
2710 void m4ds_del(GF_Box *s);
\r
2711 GF_Err m4ds_Read(GF_Box *s, GF_BitStream *bs);
\r
2712 GF_Err m4ds_Write(GF_Box *s, GF_BitStream *bs);
\r
2713 GF_Err m4ds_Size(GF_Box *s);
\r
2715 GF_Box *btrt_New();
\r
2716 void btrt_del(GF_Box *s);
\r
2717 GF_Err btrt_Read(GF_Box *s, GF_BitStream *bs);
\r
2718 GF_Err btrt_Write(GF_Box *s, GF_BitStream *bs);
\r
2719 GF_Err btrt_Size(GF_Box *s);
\r
2722 /*3GPP streaming text*/
\r
2723 GF_Box *ftab_New();
\r
2724 GF_Box *tx3g_New();
\r
2725 GF_Box *styl_New();
\r
2726 GF_Box *hlit_New();
\r
2727 GF_Box *hclr_New();
\r
2728 GF_Box *krok_New();
\r
2729 GF_Box *dlay_New();
\r
2730 GF_Box *href_New();
\r
2731 GF_Box *tbox_New();
\r
2732 GF_Box *blnk_New();
\r
2733 GF_Box *twrp_New();
\r
2735 void ftab_del(GF_Box *s);
\r
2736 void tx3g_del(GF_Box *s);
\r
2737 void styl_del(GF_Box *s);
\r
2738 void hlit_del(GF_Box *s);
\r
2739 void hclr_del(GF_Box *s);
\r
2740 void krok_del(GF_Box *s);
\r
2741 void dlay_del(GF_Box *s);
\r
2742 void href_del(GF_Box *s);
\r
2743 void tbox_del(GF_Box *s);
\r
2744 void blnk_del(GF_Box *s);
\r
2745 void twrp_del(GF_Box *s);
\r
2747 GF_Err ftab_Read(GF_Box *s, GF_BitStream *bs);
\r
2748 GF_Err tx3g_Read(GF_Box *s, GF_BitStream *bs);
\r
2749 GF_Err styl_Read(GF_Box *s, GF_BitStream *bs);
\r
2750 GF_Err hlit_Read(GF_Box *s, GF_BitStream *bs);
\r
2751 GF_Err hclr_Read(GF_Box *s, GF_BitStream *bs);
\r
2752 GF_Err krok_Read(GF_Box *s, GF_BitStream *bs);
\r
2753 GF_Err dlay_Read(GF_Box *s, GF_BitStream *bs);
\r
2754 GF_Err href_Read(GF_Box *s, GF_BitStream *bs);
\r
2755 GF_Err tbox_Read(GF_Box *s, GF_BitStream *bs);
\r
2756 GF_Err blnk_Read(GF_Box *s, GF_BitStream *bs);
\r
2757 GF_Err twrp_Read(GF_Box *s, GF_BitStream *bs);
\r
2759 #ifndef GPAC_READ_ONLY
\r
2760 GF_Err ftab_Write(GF_Box *s, GF_BitStream *bs);
\r
2761 GF_Err tx3g_Write(GF_Box *s, GF_BitStream *bs);
\r
2762 GF_Err styl_Write(GF_Box *s, GF_BitStream *bs);
\r
2763 GF_Err hlit_Write(GF_Box *s, GF_BitStream *bs);
\r
2764 GF_Err hclr_Write(GF_Box *s, GF_BitStream *bs);
\r
2765 GF_Err krok_Write(GF_Box *s, GF_BitStream *bs);
\r
2766 GF_Err dlay_Write(GF_Box *s, GF_BitStream *bs);
\r
2767 GF_Err href_Write(GF_Box *s, GF_BitStream *bs);
\r
2768 GF_Err tbox_Write(GF_Box *s, GF_BitStream *bs);
\r
2769 GF_Err blnk_Write(GF_Box *s, GF_BitStream *bs);
\r
2770 GF_Err twrp_Write(GF_Box *s, GF_BitStream *bs);
\r
2772 GF_Err ftab_Size(GF_Box *s);
\r
2773 GF_Err tx3g_Size(GF_Box *s);
\r
2774 GF_Err styl_Size(GF_Box *s);
\r
2775 GF_Err hlit_Size(GF_Box *s);
\r
2776 GF_Err hclr_Size(GF_Box *s);
\r
2777 GF_Err krok_Size(GF_Box *s);
\r
2778 GF_Err dlay_Size(GF_Box *s);
\r
2779 GF_Err href_Size(GF_Box *s);
\r
2780 GF_Err tbox_Size(GF_Box *s);
\r
2781 GF_Err blnk_Size(GF_Box *s);
\r
2782 GF_Err twrp_Size(GF_Box *s);
\r
2786 /* MPEG-21 functions */
\r
2787 GF_Box *meta_New();
\r
2788 GF_Box *xml_New();
\r
2789 GF_Box *bxml_New();
\r
2790 GF_Box *iloc_New();
\r
2791 GF_Box *pitm_New();
\r
2792 GF_Box *ipro_New();
\r
2793 GF_Box *infe_New();
\r
2794 GF_Box *iinf_New();
\r
2795 GF_Box *sinf_New();
\r
2796 GF_Box *frma_New();
\r
2797 GF_Box *schm_New();
\r
2798 GF_Box *schi_New();
\r
2799 GF_Box *enca_New();
\r
2800 GF_Box *encv_New();
\r
2801 GF_Box *encs_New();
\r
2803 void meta_del(GF_Box *s);
\r
2804 void xml_del(GF_Box *s);
\r
2805 void bxml_del(GF_Box *s);
\r
2806 void iloc_del(GF_Box *s);
\r
2807 void pitm_del(GF_Box *s);
\r
2808 void ipro_del(GF_Box *s);
\r
2809 void infe_del(GF_Box *s);
\r
2810 void iinf_del(GF_Box *s);
\r
2811 void sinf_del(GF_Box *s);
\r
2812 void frma_del(GF_Box *s);
\r
2813 void schm_del(GF_Box *s);
\r
2814 void schi_del(GF_Box *s);
\r
2816 GF_Err meta_Read(GF_Box *s, GF_BitStream *bs);
\r
2817 GF_Err xml_Read(GF_Box *s, GF_BitStream *bs);
\r
2818 GF_Err bxml_Read(GF_Box *s, GF_BitStream *bs);
\r
2819 GF_Err iloc_Read(GF_Box *s, GF_BitStream *bs);
\r
2820 GF_Err pitm_Read(GF_Box *s, GF_BitStream *bs);
\r
2821 GF_Err ipro_Read(GF_Box *s, GF_BitStream *bs);
\r
2822 GF_Err infe_Read(GF_Box *s, GF_BitStream *bs);
\r
2823 GF_Err iinf_Read(GF_Box *s, GF_BitStream *bs);
\r
2824 GF_Err sinf_Read(GF_Box *s, GF_BitStream *bs);
\r
2825 GF_Err frma_Read(GF_Box *s, GF_BitStream *bs);
\r
2826 GF_Err schm_Read(GF_Box *s, GF_BitStream *bs);
\r
2827 GF_Err schi_Read(GF_Box *s, GF_BitStream *bs);
\r
2829 #ifndef GPAC_READ_ONLY
\r
2830 GF_Err meta_Write(GF_Box *s, GF_BitStream *bs);
\r
2831 GF_Err xml_Write(GF_Box *s, GF_BitStream *bs);
\r
2832 GF_Err bxml_Write(GF_Box *s, GF_BitStream *bs);
\r
2833 GF_Err iloc_Write(GF_Box *s, GF_BitStream *bs);
\r
2834 GF_Err pitm_Write(GF_Box *s, GF_BitStream *bs);
\r
2835 GF_Err ipro_Write(GF_Box *s, GF_BitStream *bs);
\r
2836 GF_Err infe_Write(GF_Box *s, GF_BitStream *bs);
\r
2837 GF_Err iinf_Write(GF_Box *s, GF_BitStream *bs);
\r
2838 GF_Err sinf_Write(GF_Box *s, GF_BitStream *bs);
\r
2839 GF_Err frma_Write(GF_Box *s, GF_BitStream *bs);
\r
2840 GF_Err schm_Write(GF_Box *s, GF_BitStream *bs);
\r
2841 GF_Err schi_Write(GF_Box *s, GF_BitStream *bs);
\r
2843 GF_Err meta_Size(GF_Box *s);
\r
2844 GF_Err xml_Size(GF_Box *s);
\r
2845 GF_Err bxml_Size(GF_Box *s);
\r
2846 GF_Err iloc_Size(GF_Box *s);
\r
2847 GF_Err pitm_Size(GF_Box *s);
\r
2848 GF_Err ipro_Size(GF_Box *s);
\r
2849 GF_Err infe_Size(GF_Box *s);
\r
2850 GF_Err iinf_Size(GF_Box *s);
\r
2851 GF_Err sinf_Size(GF_Box *s);
\r
2852 GF_Err frma_Size(GF_Box *s);
\r
2853 GF_Err schm_Size(GF_Box *s);
\r
2854 GF_Err schi_Size(GF_Box *s);
\r
2857 /* end of MPEG-21 functions */
\r
2860 /** ISMACryp functions **/
\r
2861 GF_Box *iKMS_New();
\r
2862 GF_Box *iSFM_New();
\r
2863 void iKMS_del(GF_Box *s);
\r
2864 void iSFM_del(GF_Box *s);
\r
2865 GF_Err iKMS_Read(GF_Box *s, GF_BitStream *bs);
\r
2866 GF_Err iSFM_Read(GF_Box *s, GF_BitStream *bs);
\r
2867 #ifndef GPAC_READ_ONLY
\r
2868 GF_Err iKMS_Write(GF_Box *s, GF_BitStream *bs);
\r
2869 GF_Err iSFM_Write(GF_Box *s, GF_BitStream *bs);
\r
2870 GF_Err iKMS_Size(GF_Box *s);
\r
2871 GF_Err iSFM_Size(GF_Box *s);
\r
2874 /* Apple extensions */
\r
2875 void ilst_del(GF_Box *s);
\r
2876 void ListItem_del(GF_Box *s);
\r
2877 void data_del(GF_Box *s);
\r
2878 GF_Err ilst_Read(GF_Box *s, GF_BitStream *bs);
\r
2879 GF_Err ListItem_Read(GF_Box *s, GF_BitStream *bs);
\r
2880 GF_Err data_Read(GF_Box *s, GF_BitStream *bs);
\r
2881 GF_Box *ilst_New();
\r
2882 GF_Box *ListItem_New(u32 type);
\r
2883 GF_Box *data_New();
\r
2884 #ifndef GPAC_READ_ONLY
\r
2885 GF_Err ilst_Write(GF_Box *s, GF_BitStream *bs);
\r
2886 GF_Err ListItem_Write(GF_Box *s, GF_BitStream *bs);
\r
2887 GF_Err data_Write(GF_Box *s, GF_BitStream *bs);
\r
2888 GF_Err ilst_Size(GF_Box *s);
\r
2889 GF_Err ListItem_Size(GF_Box *s);
\r
2890 GF_Err data_Size(GF_Box *s);
\r
2894 GF_Err gb_box_array_dump(GF_List *list, FILE * trace);
\r
2895 GF_Err reftype_dump(GF_Box *a, FILE * trace);
\r
2896 GF_Err free_dump(GF_Box *a, FILE * trace);
\r
2897 GF_Err mdat_dump(GF_Box *a, FILE * trace);
\r
2898 GF_Err moov_dump(GF_Box *a, FILE * trace);
\r
2899 GF_Err mvhd_dump(GF_Box *a, FILE * trace);
\r
2900 GF_Err mdhd_dump(GF_Box *a, FILE * trace);
\r
2901 GF_Err vmhd_dump(GF_Box *a, FILE * trace);
\r
2902 GF_Err smhd_dump(GF_Box *a, FILE * trace);
\r
2903 GF_Err hmhd_dump(GF_Box *a, FILE * trace);
\r
2904 GF_Err nmhd_dump(GF_Box *a, FILE * trace);
\r
2905 GF_Err stbl_dump(GF_Box *a, FILE * trace);
\r
2906 GF_Err dinf_dump(GF_Box *a, FILE * trace);
\r
2907 GF_Err url_dump(GF_Box *a, FILE * trace);
\r
2908 GF_Err urn_dump(GF_Box *a, FILE * trace);
\r
2909 GF_Err cprt_dump(GF_Box *a, FILE * trace);
\r
2910 GF_Err hdlr_dump(GF_Box *a, FILE * trace);
\r
2911 GF_Err iods_dump(GF_Box *a, FILE * trace);
\r
2912 GF_Err trak_dump(GF_Box *a, FILE * trace);
\r
2913 GF_Err mp4s_dump(GF_Box *a, FILE * trace);
\r
2914 GF_Err mp4v_dump(GF_Box *a, FILE * trace);
\r
2915 GF_Err mp4a_dump(GF_Box *a, FILE * trace);
\r
2916 GF_Err edts_dump(GF_Box *a, FILE * trace);
\r
2917 GF_Err udta_dump(GF_Box *a, FILE * trace);
\r
2918 GF_Err dref_dump(GF_Box *a, FILE * trace);
\r
2919 GF_Err stsd_dump(GF_Box *a, FILE * trace);
\r
2920 GF_Err stts_dump(GF_Box *a, FILE * trace);
\r
2921 GF_Err ctts_dump(GF_Box *a, FILE * trace);
\r
2922 GF_Err stsh_dump(GF_Box *a, FILE * trace);
\r
2923 GF_Err elst_dump(GF_Box *a, FILE * trace);
\r
2924 GF_Err stsc_dump(GF_Box *a, FILE * trace);
\r
2925 GF_Err stsz_dump(GF_Box *a, FILE * trace);
\r
2926 GF_Err stco_dump(GF_Box *a, FILE * trace);
\r
2927 GF_Err stss_dump(GF_Box *a, FILE * trace);
\r
2928 GF_Err stdp_dump(GF_Box *a, FILE * trace);
\r
2929 GF_Err sdtp_dump(GF_Box *a, FILE * trace);
\r
2930 GF_Err co64_dump(GF_Box *a, FILE * trace);
\r
2931 GF_Err esds_dump(GF_Box *a, FILE * trace);
\r
2932 GF_Err minf_dump(GF_Box *a, FILE * trace);
\r
2933 GF_Err tkhd_dump(GF_Box *a, FILE * trace);
\r
2934 GF_Err tref_dump(GF_Box *a, FILE * trace);
\r
2935 GF_Err mdia_dump(GF_Box *a, FILE * trace);
\r
2936 GF_Err defa_dump(GF_Box *a, FILE * trace);
\r
2937 GF_Err void_dump(GF_Box *a, FILE * trace);
\r
2938 GF_Err ftyp_dump(GF_Box *a, FILE * trace);
\r
2939 GF_Err padb_dump(GF_Box *a, FILE * trace);
\r
2940 GF_Err stsf_dump(GF_Box *a, FILE * trace);
\r
2941 GF_Err gnrm_dump(GF_Box *a, FILE * trace);
\r
2942 GF_Err gnrv_dump(GF_Box *a, FILE * trace);
\r
2943 GF_Err gnra_dump(GF_Box *a, FILE * trace);
\r
2944 GF_Err gppa_dump(GF_Box *a, FILE * trace);
\r
2945 GF_Err gppv_dump(GF_Box *a, FILE * trace);
\r
2946 GF_Err gppc_dump(GF_Box *a, FILE * trace);
\r
2947 GF_Err chpl_dump(GF_Box *a, FILE * trace);
\r
2948 GF_Err dpin_dump(GF_Box *a, FILE * trace);
\r
2950 GF_Err hinf_dump(GF_Box *a, FILE * trace);
\r
2951 GF_Err trpy_dump(GF_Box *a, FILE * trace);
\r
2952 GF_Err totl_dump(GF_Box *a, FILE * trace);
\r
2953 GF_Err nump_dump(GF_Box *a, FILE * trace);
\r
2954 GF_Err npck_dump(GF_Box *a, FILE * trace);
\r
2955 GF_Err tpyl_dump(GF_Box *a, FILE * trace);
\r
2956 GF_Err tpay_dump(GF_Box *a, FILE * trace);
\r
2957 GF_Err maxr_dump(GF_Box *a, FILE * trace);
\r
2958 GF_Err dmed_dump(GF_Box *a, FILE * trace);
\r
2959 GF_Err dimm_dump(GF_Box *a, FILE * trace);
\r
2960 GF_Err drep_dump(GF_Box *a, FILE * trace);
\r
2961 GF_Err tmin_dump(GF_Box *a, FILE * trace);
\r
2962 GF_Err tmax_dump(GF_Box *a, FILE * trace);
\r
2963 GF_Err pmax_dump(GF_Box *a, FILE * trace);
\r
2964 GF_Err dmax_dump(GF_Box *a, FILE * trace);
\r
2965 GF_Err payt_dump(GF_Box *a, FILE * trace);
\r
2966 GF_Err name_dump(GF_Box *a, FILE * trace);
\r
2967 GF_Err rely_dump(GF_Box *a, FILE * trace);
\r
2968 GF_Err snro_dump(GF_Box *a, FILE * trace);
\r
2969 GF_Err tims_dump(GF_Box *a, FILE * trace);
\r
2970 GF_Err tsro_dump(GF_Box *a, FILE * trace);
\r
2971 GF_Err ghnt_dump(GF_Box *a, FILE * trace);
\r
2972 GF_Err hnti_dump(GF_Box *a, FILE * trace);
\r
2973 GF_Err sdp_dump(GF_Box *a, FILE * trace);
\r
2974 GF_Err rtpo_dump(GF_Box *a, FILE * trace);
\r
2978 #ifndef GPAC_ISOM_NO_FRAGMENTS
\r
2979 GF_Err mvex_dump(GF_Box *a, FILE * trace);
\r
2980 GF_Err mehd_dump(GF_Box *a, FILE * trace);
\r
2981 GF_Err trex_dump(GF_Box *a, FILE * trace);
\r
2982 GF_Err moof_dump(GF_Box *a, FILE * trace);
\r
2983 GF_Err mfhd_dump(GF_Box *a, FILE * trace);
\r
2984 GF_Err traf_dump(GF_Box *a, FILE * trace);
\r
2985 GF_Err tfhd_dump(GF_Box *a, FILE * trace);
\r
2986 GF_Err trun_dump(GF_Box *a, FILE * trace);
\r
2989 GF_Err avcc_dump(GF_Box *a, FILE * trace);
\r
2990 GF_Err avc1_dump(GF_Box *a, FILE * trace);
\r
2991 GF_Err m4ds_dump(GF_Box *a, FILE * trace);
\r
2992 GF_Err btrt_dump(GF_Box *a, FILE * trace);
\r
2994 GF_Err ftab_dump(GF_Box *a, FILE * trace);
\r
2995 GF_Err tx3g_dump(GF_Box *a, FILE * trace);
\r
2996 GF_Err styl_dump(GF_Box *a, FILE * trace);
\r
2997 GF_Err hlit_dump(GF_Box *a, FILE * trace);
\r
2998 GF_Err hclr_dump(GF_Box *a, FILE * trace);
\r
2999 GF_Err krok_dump(GF_Box *a, FILE * trace);
\r
3000 GF_Err dlay_dump(GF_Box *a, FILE * trace);
\r
3001 GF_Err href_dump(GF_Box *a, FILE * trace);
\r
3002 GF_Err tbox_dump(GF_Box *a, FILE * trace);
\r
3003 GF_Err blnk_dump(GF_Box *a, FILE * trace);
\r
3004 GF_Err twrp_dump(GF_Box *a, FILE * trace);
\r
3006 /* ISMACryp dump */
\r
3007 GF_Err iKMS_dump(GF_Box *a, FILE * trace);
\r
3008 GF_Err iSFM_dump(GF_Box *a, FILE * trace);
\r
3010 /*MPEG-21 extensions dump*/
\r
3011 GF_Err meta_dump(GF_Box *a, FILE * trace);
\r
3012 GF_Err xml_dump(GF_Box *a, FILE * trace);
\r
3013 GF_Err bxml_dump(GF_Box *a, FILE * trace);
\r
3014 GF_Err iloc_dump(GF_Box *a, FILE * trace);
\r
3015 GF_Err pitm_dump(GF_Box *a, FILE * trace);
\r
3016 GF_Err ipro_dump(GF_Box *a, FILE * trace);
\r
3017 GF_Err infe_dump(GF_Box *a, FILE * trace);
\r
3018 GF_Err iinf_dump(GF_Box *a, FILE * trace);
\r
3019 GF_Err sinf_dump(GF_Box *a, FILE * trace);
\r
3020 GF_Err frma_dump(GF_Box *a, FILE * trace);
\r
3021 GF_Err schm_dump(GF_Box *a, FILE * trace);
\r
3022 GF_Err schi_dump(GF_Box *a, FILE * trace);
\r
3024 /*Apple extensions*/
\r
3025 GF_Err ilst_dump(GF_Box *a, FILE * trace);
\r
3026 GF_Err ListItem_dump(GF_Box *a, FILE * trace);
\r
3027 GF_Err data_dump(GF_Box *a, FILE * trace);
\r
3029 /*Apple extensions*/
\r
3030 GF_MetaBox *gf_isom_apple_get_meta_extensions(GF_ISOFile *mov);
\r
3032 #ifndef GPAC_READ_ONLY
\r
3033 GF_MetaBox *gf_isom_apple_create_meta_extensions(GF_ISOFile *mov);
\r
3034 #endif //GPAC_READ_ONLY
\r
3036 /*OMA extensions*/
\r
3037 GF_Box *ohdr_New();
\r
3038 void ohdr_del(GF_Box *s);
\r
3039 GF_Err ohdr_Read(GF_Box *s, GF_BitStream *bs);
\r
3040 GF_Err ohdr_Write(GF_Box *s, GF_BitStream *bs);
\r
3041 GF_Err ohdr_Size(GF_Box *s);
\r
3042 GF_Err ohdr_dump(GF_Box *a, FILE * trace);
\r
3043 GF_Box *grpi_New();
\r
3044 void grpi_del(GF_Box *s);
\r
3045 GF_Err grpi_Read(GF_Box *s, GF_BitStream *bs);
\r
3046 GF_Err grpi_Write(GF_Box *s, GF_BitStream *bs);
\r
3047 GF_Err grpi_Size(GF_Box *s);
\r
3048 GF_Err grpi_dump(GF_Box *a, FILE * trace);
\r
3049 GF_Box *mdri_New();
\r
3050 void mdri_del(GF_Box *s);
\r
3051 GF_Err mdri_Read(GF_Box *s, GF_BitStream *bs);
\r
3052 GF_Err mdri_Write(GF_Box *s, GF_BitStream *bs);
\r
3053 GF_Err mdri_Size(GF_Box *s);
\r
3054 GF_Err mdri_dump(GF_Box *a, FILE * trace);
\r
3055 GF_Box *odtt_New();
\r
3056 void odtt_del(GF_Box *s);
\r
3057 GF_Err odtt_Read(GF_Box *s, GF_BitStream *bs);
\r
3058 GF_Err odtt_Write(GF_Box *s, GF_BitStream *bs);
\r
3059 GF_Err odtt_Size(GF_Box *s);
\r
3060 GF_Err odtt_dump(GF_Box *a, FILE * trace);
\r
3061 GF_Box *odrb_New();
\r
3062 void odrb_del(GF_Box *s);
\r
3063 GF_Err odrb_Read(GF_Box *s, GF_BitStream *bs);
\r
3064 GF_Err odrb_Write(GF_Box *s, GF_BitStream *bs);
\r
3065 GF_Err odrb_Size(GF_Box *s);
\r
3066 GF_Err odrb_dump(GF_Box *a, FILE * trace);
\r
3067 GF_Box *odkm_New();
\r
3068 void odkm_del(GF_Box *s);
\r
3069 GF_Err odkm_Read(GF_Box *s, GF_BitStream *bs);
\r
3070 GF_Err odkm_Write(GF_Box *s, GF_BitStream *bs);
\r
3071 GF_Err odkm_Size(GF_Box *s);
\r
3072 GF_Err odkm_dump(GF_Box *a, FILE * trace);
\r
3075 GF_Box *pasp_New();
\r
3076 void pasp_del(GF_Box *s);
\r
3077 GF_Err pasp_Read(GF_Box *s, GF_BitStream *bs);
\r
3078 GF_Err pasp_Write(GF_Box *s, GF_BitStream *bs);
\r
3079 GF_Err pasp_Size(GF_Box *s);
\r
3080 GF_Err pasp_dump(GF_Box *a, FILE * trace);
\r
3082 GF_Box *metx_New(u32 type);
\r
3083 void metx_del(GF_Box *s);
\r
3084 GF_Err metx_Read(GF_Box *s, GF_BitStream *bs);
\r
3085 GF_Err metx_Write(GF_Box *s, GF_BitStream *bs);
\r
3086 GF_Err metx_Size(GF_Box *s);
\r
3087 GF_Err metx_dump(GF_Box *a, FILE * trace);
\r
3091 GF_Box *tsel_New();
\r
3092 void tsel_del(GF_Box *s);
\r
3093 GF_Err tsel_Read(GF_Box *s, GF_BitStream *bs);
\r
3094 GF_Err tsel_Write(GF_Box *s, GF_BitStream *bs);
\r
3095 GF_Err tsel_Size(GF_Box *s);
\r
3096 GF_Err tsel_dump(GF_Box *a, FILE * trace);
\r
3099 GF_Box *dimC_New();
\r
3100 void dimC_del(GF_Box *s);
\r
3101 GF_Err dimC_Read(GF_Box *s, GF_BitStream *bs);
\r
3102 GF_Err dimC_Write(GF_Box *s, GF_BitStream *bs);
\r
3103 GF_Err dimC_Size(GF_Box *s);
\r
3104 GF_Err dimC_dump(GF_Box *a, FILE * trace);
\r
3106 GF_Box *dims_New();
\r
3107 void dims_del(GF_Box *s);
\r
3108 GF_Err dims_Read(GF_Box *s, GF_BitStream *bs);
\r
3109 GF_Err dims_Write(GF_Box *s, GF_BitStream *bs);
\r
3110 GF_Err dims_Size(GF_Box *s);
\r
3111 GF_Err dims_dump(GF_Box *a, FILE * trace);
\r
3113 GF_Box *diST_New();
\r
3114 void diST_del(GF_Box *s);
\r
3115 GF_Err diST_Read(GF_Box *s, GF_BitStream *bs);
\r
3116 GF_Err diST_Write(GF_Box *s, GF_BitStream *bs);
\r
3117 GF_Err diST_Size(GF_Box *s);
\r
3118 GF_Err diST_dump(GF_Box *a, FILE * trace);
\r
3121 GF_Box *ac3_New();
\r
3122 void ac3_del(GF_Box *s);
\r
3123 GF_Err ac3_Read(GF_Box *s, GF_BitStream *bs);
\r
3124 GF_Err ac3_Write(GF_Box *s, GF_BitStream *bs);
\r
3125 GF_Err ac3_Size(GF_Box *s);
\r
3126 GF_Err ac3_dump(GF_Box *a, FILE * trace);
\r
3128 GF_Box *dac3_New();
\r
3129 void dac3_del(GF_Box *s);
\r
3130 GF_Err dac3_Read(GF_Box *s, GF_BitStream *bs);
\r
3131 GF_Err dac3_Write(GF_Box *s, GF_BitStream *bs);
\r
3132 GF_Err dac3_Size(GF_Box *s);
\r
3133 GF_Err dac3_dump(GF_Box *a, FILE * trace);
\r
3135 #ifdef __cplusplus
\r
3139 #endif //_GF_ISOMEDIA_DEV_H_
\r