OSDN Git Service

stop using trunk or dist directory in rec10 project.
[rec10/rec10-git.git] / tstools / DtsEdit / src / gpac / internal / isomedia_dev.h
diff --git a/tstools/DtsEdit/src/gpac/internal/isomedia_dev.h b/tstools/DtsEdit/src/gpac/internal/isomedia_dev.h
deleted file mode 100644 (file)
index c00df4b..0000000
+++ /dev/null
@@ -1,3140 +0,0 @@
-/*\r
- *                     GPAC - Multimedia Framework C SDK\r
- *\r
- *                     Copyright (c) Jean Le Feuvre 2000-2005 \r
- *                                     All rights reserved\r
- *\r
- *  This file is part of GPAC / ISO Media File Format sub-project\r
- *\r
- *  GPAC is free software; you can redistribute it and/or modify\r
- *  it under the terms of the GNU Lesser General Public License as published by\r
- *  the Free Software Foundation; either version 2, or (at your option)\r
- *  any later version.\r
- *   \r
- *  GPAC is distributed in the hope that it will be useful,\r
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- *  GNU Lesser General Public License for more details.\r
- *   \r
- *  You should have received a copy of the GNU Lesser General Public\r
- *  License along with this library; see the file COPYING.  If not, write to\r
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. \r
- *\r
- */\r
-\r
-#ifndef _GF_ISOMEDIA_DEV_H_\r
-#define _GF_ISOMEDIA_DEV_H_\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#include <gpac/isomedia.h>\r
-\r
-\r
-//the default size is 64, cause we need to handle large boxes...\r
-#define GF_ISOM_BOX                    \\r
-       u32 type;                       \\r
-       u64 size;                       \\r
-\r
-#define GF_ISOM_FULL_BOX               \\r
-       GF_ISOM_BOX                     \\r
-       u8 version;                     \\r
-       u32 flags;                      \\r
-\r
-#define GF_ISOM_UUID_BOX       \\r
-       GF_ISOM_BOX                     \\r
-       u8 uuid[16];            \\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-} GF_Box;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-} GF_FullBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_UUID_BOX\r
-} GF_UUIDBox;\r
-\r
-/*constructor*/\r
-GF_Box *gf_isom_box_new(u32 boxType);\r
-\r
-GF_Err gf_isom_box_write(GF_Box *ptr, GF_BitStream *bs);\r
-GF_Err gf_isom_box_read(GF_Box *ptr, GF_BitStream *bs);\r
-void gf_isom_box_del(GF_Box *ptr);\r
-GF_Err gf_isom_box_size(GF_Box *ptr);\r
-\r
-GF_Err gf_isom_parse_box(GF_Box **outBox, GF_BitStream *bs);\r
-GF_Err gf_isom_read_box_list(GF_Box *s, GF_BitStream *bs, GF_Err (*add_box)(GF_Box *par, GF_Box *b));\r
-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
-\r
-GF_Err gf_isom_box_get_size(GF_Box *ptr);\r
-GF_Err gf_isom_full_box_get_size(GF_Box *ptr);\r
-GF_Err gf_isom_box_write_header(GF_Box *ptr, GF_BitStream *bs);\r
-GF_Err gf_isom_full_box_read(GF_Box *ptr, GF_BitStream *bs);\r
-GF_Err gf_isom_full_box_write(GF_Box *s, GF_BitStream *bs);\r
-void gf_isom_full_box_init(GF_Box *ptr);\r
-void gf_isom_box_array_del(GF_List *boxList);\r
-GF_Err gf_isom_box_array_write(GF_Box *parent, GF_List *list, GF_BitStream *bs);\r
-GF_Err gf_isom_box_array_size(GF_Box *parent, GF_List *list);\r
-\r
-\r
-enum\r
-{\r
-       GF_ISOM_BOX_TYPE_CO64   = GF_4CC( 'c', 'o', '6', '4' ),\r
-       GF_ISOM_BOX_TYPE_STCO   = GF_4CC( 's', 't', 'c', 'o' ),\r
-       GF_ISOM_BOX_TYPE_CRHD   = GF_4CC( 'c', 'r', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_CTTS   = GF_4CC( 'c', 't', 't', 's' ),\r
-       GF_ISOM_BOX_TYPE_CPRT   = GF_4CC( 'c', 'p', 'r', 't' ),\r
-       GF_ISOM_BOX_TYPE_CHPL   = GF_4CC( 'c', 'h', 'p', 'l' ),\r
-       GF_ISOM_BOX_TYPE_URL    = GF_4CC( 'u', 'r', 'l', ' ' ),\r
-       GF_ISOM_BOX_TYPE_URN    = GF_4CC( 'u', 'r', 'n', ' ' ),\r
-       GF_ISOM_BOX_TYPE_DINF   = GF_4CC( 'd', 'i', 'n', 'f' ),\r
-       GF_ISOM_BOX_TYPE_DREF   = GF_4CC( 'd', 'r', 'e', 'f' ),\r
-       GF_ISOM_BOX_TYPE_STDP   = GF_4CC( 's', 't', 'd', 'p' ),\r
-       GF_ISOM_BOX_TYPE_EDTS   = GF_4CC( 'e', 'd', 't', 's' ),\r
-       GF_ISOM_BOX_TYPE_ELST   = GF_4CC( 'e', 'l', 's', 't' ),\r
-       GF_ISOM_BOX_TYPE_UUID   = GF_4CC( 'u', 'u', 'i', 'd' ),\r
-       GF_ISOM_BOX_TYPE_FREE   = GF_4CC( 'f', 'r', 'e', 'e' ),\r
-       GF_ISOM_BOX_TYPE_HDLR   = GF_4CC( 'h', 'd', 'l', 'r' ),\r
-       GF_ISOM_BOX_TYPE_GMHD   = GF_4CC( 'g', 'm', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_HMHD   = GF_4CC( 'h', 'm', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_HINT   = GF_4CC( 'h', 'i', 'n', 't' ),\r
-       GF_ISOM_BOX_TYPE_MDIA   = GF_4CC( 'm', 'd', 'i', 'a' ),\r
-       GF_ISOM_BOX_TYPE_MDAT   = GF_4CC( 'm', 'd', 'a', 't' ),\r
-       GF_ISOM_BOX_TYPE_MDHD   = GF_4CC( 'm', 'd', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_MINF   = GF_4CC( 'm', 'i', 'n', 'f' ),\r
-       GF_ISOM_BOX_TYPE_MOOV   = GF_4CC( 'm', 'o', 'o', 'v' ),\r
-       GF_ISOM_BOX_TYPE_MVHD   = GF_4CC( 'm', 'v', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_STSD   = GF_4CC( 's', 't', 's', 'd' ),\r
-       GF_ISOM_BOX_TYPE_STSZ   = GF_4CC( 's', 't', 's', 'z' ),\r
-       GF_ISOM_BOX_TYPE_STZ2   = GF_4CC( 's', 't', 'z', '2' ),\r
-       GF_ISOM_BOX_TYPE_STBL   = GF_4CC( 's', 't', 'b', 'l' ),\r
-       GF_ISOM_BOX_TYPE_STSC   = GF_4CC( 's', 't', 's', 'c' ),\r
-       GF_ISOM_BOX_TYPE_STSH   = GF_4CC( 's', 't', 's', 'h' ),\r
-       GF_ISOM_BOX_TYPE_SKIP   = GF_4CC( 's', 'k', 'i', 'p' ),\r
-       GF_ISOM_BOX_TYPE_SMHD   = GF_4CC( 's', 'm', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_STSS   = GF_4CC( 's', 't', 's', 's' ),\r
-       GF_ISOM_BOX_TYPE_STTS   = GF_4CC( 's', 't', 't', 's' ),\r
-       GF_ISOM_BOX_TYPE_TRAK   = GF_4CC( 't', 'r', 'a', 'k' ),\r
-       GF_ISOM_BOX_TYPE_TKHD   = GF_4CC( 't', 'k', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_TREF   = GF_4CC( 't', 'r', 'e', 'f' ),\r
-       GF_ISOM_BOX_TYPE_UDTA   = GF_4CC( 'u', 'd', 't', 'a' ),\r
-       GF_ISOM_BOX_TYPE_VMHD   = GF_4CC( 'v', 'm', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_FTYP   = GF_4CC( 'f', 't', 'y', 'p' ),\r
-       GF_ISOM_BOX_TYPE_FADB   = GF_4CC( 'p', 'a', 'd', 'b' ),\r
-       GF_ISOM_BOX_TYPE_PDIN   = GF_4CC( 'p', 'd', 'i', 'n' ),\r
-       GF_ISOM_BOX_TYPE_SDTP   = GF_4CC( 's', 'd', 't', 'p' ),\r
-\r
-#ifndef        GPAC_ISOM_NO_FRAGMENTS\r
-       /*Movie Fragments*/\r
-       GF_ISOM_BOX_TYPE_MVEX   = GF_4CC( 'm', 'v', 'e', 'x' ),\r
-       GF_ISOM_BOX_TYPE_MEHD   = GF_4CC( 'm', 'e', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_TREX   = GF_4CC( 't', 'r', 'e', 'x' ),\r
-       GF_ISOM_BOX_TYPE_MOOF   = GF_4CC( 'm', 'o', 'o', 'f' ),\r
-       GF_ISOM_BOX_TYPE_MFHD   = GF_4CC( 'm', 'f', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_TRAF   = GF_4CC( 't', 'r', 'a', 'f' ),\r
-       GF_ISOM_BOX_TYPE_TFHD   = GF_4CC( 't', 'f', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_TRUN   = GF_4CC( 't', 'r', 'u', 'n' ),\r
-#endif\r
-\r
-       /*MP4 extensions*/\r
-       GF_ISOM_BOX_TYPE_DPND   = GF_4CC( 'd', 'p', 'n', 'd' ),\r
-       GF_ISOM_BOX_TYPE_IODS   = GF_4CC( 'i', 'o', 'd', 's' ),\r
-       GF_ISOM_BOX_TYPE_ESDS   = GF_4CC( 'e', 's', 'd', 's' ),\r
-       GF_ISOM_BOX_TYPE_MPOD   = GF_4CC( 'm', 'p', 'o', 'd' ),\r
-       GF_ISOM_BOX_TYPE_SYNC   = GF_4CC( 's', 'y', 'n', 'c' ),\r
-       GF_ISOM_BOX_TYPE_IPIR   = GF_4CC( 'i', 'p', 'i', 'r' ),\r
-       GF_ISOM_BOX_TYPE_SDHD   = GF_4CC( 's', 'd', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_ODHD   = GF_4CC( 'o', 'd', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_NMHD   = GF_4CC( 'n', 'm', 'h', 'd' ),\r
-       GF_ISOM_BOX_TYPE_MP4S   = GF_4CC( 'm', 'p', '4', 's' ),\r
-       GF_ISOM_BOX_TYPE_MP4A   = GF_4CC( 'm', 'p', '4', 'a' ),\r
-       GF_ISOM_BOX_TYPE_MP4V   = GF_4CC( 'm', 'p', '4', 'v' ),\r
-\r
-       /*AVC / H264 extension*/\r
-       GF_ISOM_BOX_TYPE_AVCC   = GF_4CC( 'a', 'v', 'c', 'C' ),\r
-       GF_ISOM_BOX_TYPE_BTRT   = GF_4CC( 'b', 't', 'r', 't' ),\r
-       GF_ISOM_BOX_TYPE_M4DS   = GF_4CC( 'm', '4', 'd', 's' ),\r
-       GF_ISOM_BOX_TYPE_AVC1   = GF_4CC( 'a', 'v', 'c', '1' ),\r
-       GF_ISOM_BOX_TYPE_PASP   = GF_4CC( 'p', 'a', 's', 'p' ),\r
-\r
-       /*3GPP extensions*/\r
-       GF_ISOM_BOX_TYPE_DAMR   = GF_4CC( 'd', 'a', 'm', 'r' ),\r
-       GF_ISOM_BOX_TYPE_D263   = GF_4CC( 'd', '2', '6', '3' ),\r
-       GF_ISOM_BOX_TYPE_DEVC   = GF_4CC( 'd', 'e', 'v', 'c' ),\r
-       GF_ISOM_BOX_TYPE_DQCP   = GF_4CC( 'd', 'q', 'c', 'p' ),\r
-       GF_ISOM_BOX_TYPE_DSMV   = GF_4CC( 'd', 's', 'm', 'v' ),\r
-       GF_ISOM_BOX_TYPE_TSEL   = GF_4CC( 't', 's', 'e', 'l' ),\r
-\r
-       /*3GPP text / MPEG-4 StreamingText*/\r
-       GF_ISOM_BOX_TYPE_FTAB   = GF_4CC( 'f', 't', 'a', 'b' ),\r
-       GF_ISOM_BOX_TYPE_TX3G   = GF_4CC( 't', 'x', '3', 'g' ),\r
-       GF_ISOM_BOX_TYPE_STYL   = GF_4CC( 's', 't', 'y', 'l' ),\r
-       GF_ISOM_BOX_TYPE_HLIT   = GF_4CC( 'h', 'l', 'i', 't' ),\r
-       GF_ISOM_BOX_TYPE_HCLR   = GF_4CC( 'h', 'c', 'l', 'r' ),\r
-       GF_ISOM_BOX_TYPE_KROK   = GF_4CC( 'k', 'r', 'o', 'k' ),\r
-       GF_ISOM_BOX_TYPE_DLAY   = GF_4CC( 'd', 'l', 'a', 'y' ),\r
-       GF_ISOM_BOX_TYPE_HREF   = GF_4CC( 'h', 'r', 'e', 'f' ),\r
-       GF_ISOM_BOX_TYPE_TBOX   = GF_4CC( 't', 'b', 'o', 'x' ),\r
-       GF_ISOM_BOX_TYPE_BLNK   = GF_4CC( 'b', 'l', 'n', 'k' ),\r
-       GF_ISOM_BOX_TYPE_TWRP   = GF_4CC( 't', 'w', 'r', 'p' ),\r
-\r
-       /* ISO Base Media File Format Extensions for MPEG-21 */\r
-       GF_ISOM_BOX_TYPE_META   = GF_4CC( 'm', 'e', 't', 'a' ),\r
-       GF_ISOM_BOX_TYPE_XML    = GF_4CC( 'x', 'm', 'l', ' ' ),\r
-       GF_ISOM_BOX_TYPE_BXML   = GF_4CC( 'b', 'x', 'm', 'l' ),\r
-       GF_ISOM_BOX_TYPE_ILOC   = GF_4CC( 'i', 'l', 'o', 'c' ),\r
-       GF_ISOM_BOX_TYPE_PITM   = GF_4CC( 'p', 'i', 't', 'm' ),\r
-       GF_ISOM_BOX_TYPE_IPRO   = GF_4CC( 'i', 'p', 'r', 'o' ),\r
-       GF_ISOM_BOX_TYPE_INFE   = GF_4CC( 'i', 'n', 'f', 'e' ),\r
-       GF_ISOM_BOX_TYPE_IINF   = GF_4CC( 'i', 'i', 'n', 'f' ),\r
-       GF_ISOM_BOX_TYPE_ENCA   = GF_4CC( 'e', 'n', 'c', 'a' ),\r
-       GF_ISOM_BOX_TYPE_ENCV   = GF_4CC( 'e', 'n', 'c', 'v' ),\r
-       GF_ISOM_BOX_TYPE_ENCT   = GF_4CC( 'e', 'n', 'c', 't' ),\r
-       GF_ISOM_BOX_TYPE_ENCS   = GF_4CC( 'e', 'n', 'c', 's' ),\r
-       GF_ISOM_BOX_TYPE_SINF   = GF_4CC( 's', 'i', 'n', 'f' ),\r
-       GF_ISOM_BOX_TYPE_FRMA   = GF_4CC( 'f', 'r', 'm', 'a' ),\r
-       GF_ISOM_BOX_TYPE_SCHM   = GF_4CC( 's', 'c', 'h', 'm' ),\r
-       GF_ISOM_BOX_TYPE_SCHI   = GF_4CC( 's', 'c', 'h', 'i' ),\r
-\r
-       GF_ISOM_BOX_TYPE_METX   = GF_4CC( 'm', 'e', 't', 'x' ),\r
-       GF_ISOM_BOX_TYPE_METT   = GF_4CC( 'm', 'e', 't', 't' ),\r
-\r
-       /* ISMA 1.0 Encryption and Authentication V 1.0 */\r
-       GF_ISOM_BOX_TYPE_IKMS   = GF_4CC( 'i', 'K', 'M', 'S' ),\r
-       GF_ISOM_BOX_TYPE_ISFM   = GF_4CC( 'i', 'S', 'F', 'M' ),\r
-\r
-       /* Hinting boxes */\r
-       GF_ISOM_BOX_TYPE_RTP_STSD       = GF_4CC( 'r', 't', 'p', ' ' ),\r
-       GF_ISOM_BOX_TYPE_HNTI   = GF_4CC( 'h', 'n', 't', 'i' ),\r
-       GF_ISOM_BOX_TYPE_RTP    = GF_4CC( 'r', 't', 'p', ' ' ),\r
-       GF_ISOM_BOX_TYPE_SDP    = GF_4CC( 's', 'd', 'p', ' ' ),\r
-       GF_ISOM_BOX_TYPE_HINF   = GF_4CC( 'h', 'i', 'n', 'f' ),\r
-       GF_ISOM_BOX_TYPE_NAME   = GF_4CC( 'n', 'a', 'm', 'e' ),\r
-       GF_ISOM_BOX_TYPE_TRPY   = GF_4CC( 't', 'r', 'p', 'y' ),\r
-       GF_ISOM_BOX_TYPE_NUMP   = GF_4CC( 'n', 'u', 'm', 'p' ),\r
-       GF_ISOM_BOX_TYPE_TOTL   = GF_4CC( 't', 'o', 't', 'l' ),\r
-       GF_ISOM_BOX_TYPE_NPCK   = GF_4CC( 'n', 'p', 'c', 'k' ),\r
-       GF_ISOM_BOX_TYPE_TPYL   = GF_4CC( 't', 'p', 'y', 'l' ),\r
-       GF_ISOM_BOX_TYPE_TPAY   = GF_4CC( 't', 'p', 'a', 'y' ),\r
-       GF_ISOM_BOX_TYPE_MAXR   = GF_4CC( 'm', 'a', 'x', 'r' ),\r
-       GF_ISOM_BOX_TYPE_DMED   = GF_4CC( 'd', 'm', 'e', 'd' ),\r
-       GF_ISOM_BOX_TYPE_DIMM   = GF_4CC( 'd', 'i', 'm', 'm' ),\r
-       GF_ISOM_BOX_TYPE_DREP   = GF_4CC( 'd', 'r', 'e', 'p' ),\r
-       GF_ISOM_BOX_TYPE_TMIN   = GF_4CC( 't', 'm', 'i', 'n' ),\r
-       GF_ISOM_BOX_TYPE_TMAX   = GF_4CC( 't', 'm', 'a', 'x' ),\r
-       GF_ISOM_BOX_TYPE_PMAX   = GF_4CC( 'p', 'm', 'a', 'x' ),\r
-       GF_ISOM_BOX_TYPE_DMAX   = GF_4CC( 'd', 'm', 'a', 'x' ),\r
-       GF_ISOM_BOX_TYPE_PAYT   = GF_4CC( 'p', 'a', 'y', 't' ),\r
-       GF_ISOM_BOX_TYPE_RELY   = GF_4CC( 'r', 'e', 'l', 'y' ),\r
-       GF_ISOM_BOX_TYPE_TIMS   = GF_4CC( 't', 'i', 'm', 's' ),\r
-       GF_ISOM_BOX_TYPE_TSRO   = GF_4CC( 't', 's', 'r', 'o' ),\r
-       GF_ISOM_BOX_TYPE_SNRO   = GF_4CC( 's', 'n', 'r', 'o' ),\r
-       GF_ISOM_BOX_TYPE_RTPO   = GF_4CC( 'r', 't', 'p', 'o' ),\r
-       \r
-       /*internal type for track references*/\r
-       GF_ISOM_BOX_TYPE_REFT   = GF_4CC( 'R', 'E', 'F', 'T' ),\r
-\r
-       /* Apple extensions */\r
-\r
-       GF_ISOM_BOX_TYPE_ILST   = GF_4CC( 'i', 'l', 's', 't' ),\r
-       GF_ISOM_BOX_TYPE_0xA9NAM        = GF_4CC( 0xA9, 'n', 'a', 'm' ),\r
-       GF_ISOM_BOX_TYPE_0xA9CMT        = GF_4CC( 0xA9, 'c', 'm', 't' ),\r
-       GF_ISOM_BOX_TYPE_0xA9DAY        = GF_4CC( 0xA9, 'd', 'a', 'y' ),\r
-       GF_ISOM_BOX_TYPE_0xA9ART        = GF_4CC( 0xA9, 'A', 'R', 'T' ),\r
-       GF_ISOM_BOX_TYPE_0xA9TRK        = GF_4CC( 0xA9, 't', 'r', 'k' ),\r
-       GF_ISOM_BOX_TYPE_0xA9ALB        = GF_4CC( 0xA9, 'a', 'l', 'b' ),\r
-       GF_ISOM_BOX_TYPE_0xA9COM        = GF_4CC( 0xA9, 'c', 'o', 'm' ),\r
-       GF_ISOM_BOX_TYPE_0xA9WRT        = GF_4CC( 0xA9, 'w', 'r', 't' ),\r
-       GF_ISOM_BOX_TYPE_0xA9TOO        = GF_4CC( 0xA9, 't', 'o', 'o' ),\r
-       GF_ISOM_BOX_TYPE_0xA9CPY        = GF_4CC( 0xA9, 'c', 'p', 'y' ),\r
-       GF_ISOM_BOX_TYPE_0xA9DES        = GF_4CC( 0xA9, 'd', 'e', 's' ),\r
-       GF_ISOM_BOX_TYPE_0xA9GEN        = GF_4CC( 0xA9, 'g', 'e', 'n' ),\r
-       GF_ISOM_BOX_TYPE_0xA9GRP        = GF_4CC( 0xA9, 'g', 'r', 'p' ),\r
-       GF_ISOM_BOX_TYPE_0xA9ENC        = GF_4CC( 0xA9, 'e', 'n', 'c' ),\r
-       GF_ISOM_BOX_TYPE_aART           = GF_4CC( 'a', 'A', 'R', 'T' ),\r
-       GF_ISOM_BOX_TYPE_PGAP = GF_4CC( 'p', 'g', 'a', 'p' ),\r
-       GF_ISOM_BOX_TYPE_GNRE   = GF_4CC( 'g', 'n', 'r', 'e' ),\r
-       GF_ISOM_BOX_TYPE_DISK   = GF_4CC( 'd', 'i', 's', 'k' ),\r
-       GF_ISOM_BOX_TYPE_TRKN   = GF_4CC( 't', 'r', 'k', 'n' ),\r
-       GF_ISOM_BOX_TYPE_TMPO   = GF_4CC( 't', 'm', 'p', 'o' ),\r
-       GF_ISOM_BOX_TYPE_CPIL   = GF_4CC( 'c', 'p', 'i', 'l' ),\r
-       GF_ISOM_BOX_TYPE_COVR   = GF_4CC( 'c', 'o', 'v', 'r' ),\r
-       GF_ISOM_BOX_TYPE_iTunesSpecificInfo     = GF_4CC( '-', '-', '-', '-' ),\r
-       GF_ISOM_BOX_TYPE_DATA   = GF_4CC( 'd', 'a', 't', 'a' ),\r
-\r
-       GF_ISOM_HANDLER_TYPE_MDIR       = GF_4CC( 'm', 'd', 'i', 'r' ),\r
-       GF_ISOM_BOX_TYPE_CHAP   = GF_4CC( 'c', 'h', 'a', 'p' ),\r
-       \r
-       /*OMA (P)DCF boxes*/\r
-       GF_ISOM_BOX_TYPE_OHDR   = GF_4CC( 'o', 'h', 'd', 'r' ),\r
-       GF_ISOM_BOX_TYPE_GRPI   = GF_4CC( 'g', 'r', 'p', 'i' ),\r
-       GF_ISOM_BOX_TYPE_MDRI   = GF_4CC( 'm', 'd', 'r', 'i' ),\r
-       GF_ISOM_BOX_TYPE_ODTT   = GF_4CC( 'o', 'd', 't', 't' ),\r
-       GF_ISOM_BOX_TYPE_ODRB   = GF_4CC( 'o', 'd', 'r', 'b' ),\r
-       GF_ISOM_BOX_TYPE_ODKM   = GF_4CC( 'o', 'd', 'k', 'm' ),\r
-       GF_ISOM_BOX_TYPE_ODAF   = GF_4CC( 'o', 'd', 'a', 'f' ),\r
-\r
-       /*3GPP DIMS */\r
-       GF_ISOM_BOX_TYPE_DIMS   = GF_4CC( 'd', 'i', 'm', 's' ),\r
-       GF_ISOM_BOX_TYPE_DIMC   = GF_4CC( 'd', 'i', 'm', 'C' ),\r
-       GF_ISOM_BOX_TYPE_DIST   = GF_4CC( 'd', 'i', 'S', 'T' ),\r
-\r
-\r
-       GF_ISOM_BOX_TYPE_AC3    = GF_4CC( 'a', 'c', '-', '3' ),\r
-       GF_ISOM_BOX_TYPE_DAC3   = GF_4CC( 'd', 'a', 'c', '3' ),\r
-\r
-       /*ALL INTERNAL BOXES - NEVER WRITTEN TO FILE!!*/\r
-\r
-       /*generic handlers*/\r
-       GF_ISOM_BOX_TYPE_GNRM   = GF_4CC( 'g', 'n', 'r', 'm' ),\r
-       GF_ISOM_BOX_TYPE_GNRV   = GF_4CC( 'g', 'n', 'r', 'v' ),\r
-       GF_ISOM_BOX_TYPE_GNRA   = GF_4CC( 'g', 'n', 'r', 'a' ),\r
-       /*storage of AU fragments (for MPEG-4 visual resync marker (video packets), located in stbl.*/\r
-       GF_ISOM_BOX_TYPE_STSF   =  GF_4CC( 'S', 'T', 'S', 'F' ),\r
-       /*base constructor of all hint formats (currently only RTP uses it)*/\r
-       GF_ISOM_BOX_TYPE_GHNT   = GF_4CC( 'g', 'h', 'n', 't' ),\r
-       /*for compatibility with old files hinted for DSS - needs special parsing*/\r
-       GF_ISOM_BOX_TYPE_VOID   = GF_4CC( 'V', 'O', 'I', 'D' ),\r
-};\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       /*note: the data is NEVER loaded to the mdat in this lib*/\r
-       u64 dataSize;\r
-       char *data;\r
-} GF_MediaDataBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       char *data;\r
-       u32 dataSize;\r
-} GF_UnknownBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_UUID_BOX\r
-       char *data;\r
-       u32 dataSize;\r
-} GF_UnknownUUIDBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u64 creationTime;\r
-       u64 modificationTime;\r
-       u32 timeScale;\r
-       u64 duration;\r
-       u32 nextTrackID;\r
-       u32 preferredRate;\r
-       u16 preferredVolume;\r
-       char reserved[10];\r
-       u32 matrixA;\r
-       u32 matrixB;\r
-       u32 matrixU;\r
-       u32 matrixC;\r
-       u32 matrixD;\r
-       u32 matrixV;\r
-       u32 matrixW;\r
-       u32 matrixX;\r
-       u32 matrixY;\r
-       u32 previewTime;\r
-       u32 previewDuration;\r
-       u32 posterTime;\r
-       u32 selectionTime;\r
-       u32 selectionDuration;\r
-       u32 currentTime;\r
-} GF_MovieHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_Descriptor *descriptor;\r
-} GF_ObjectDescriptorBox;\r
-\r
-/*used for entry list*/\r
-typedef struct\r
-{\r
-       u64 segmentDuration;\r
-       s64 mediaTime;\r
-       u32 mediaRate;\r
-} GF_EdtsEntry;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *entryList;\r
-} GF_EditListBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_EditListBox *editList;\r
-} GF_EditBox;\r
-\r
-\r
-/*used to classify boxes in the UserData GF_Box*/\r
-typedef struct\r
-{\r
-       u32 boxType;\r
-       u8 uuid[16];\r
-       GF_List *boxList;\r
-} GF_UserDataMap;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_List *recordList;\r
-} GF_UserDataBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_MovieHeaderBox *mvhd;\r
-       GF_ObjectDescriptorBox *iods;\r
-       GF_UserDataBox *udta;\r
-#ifndef        GPAC_ISOM_NO_FRAGMENTS\r
-       struct __tag_mvex_box *mvex;\r
-#endif\r
-       /*meta box if any*/\r
-       struct __tag_meta_box *meta;\r
-       /*track boxes*/\r
-       GF_List *trackList;\r
-       /*other boxes*/\r
-       GF_List *boxes;\r
-\r
-       GF_ISOFile *mov;\r
-\r
-} GF_MovieBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u64 creationTime;\r
-       u64 modificationTime;\r
-       u32 trackID;\r
-       u32 reserved1;\r
-       u64 duration;\r
-       u32 reserved2[2];\r
-       u16 layer;\r
-       u16 alternate_group;\r
-       u16 volume;\r
-       u16 reserved3;\r
-       u32 matrix[9];\r
-       u32 width, height;\r
-} GF_TrackHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_List *boxList;\r
-} GF_TrackReferenceBox;\r
-\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_UserDataBox *udta;\r
-       GF_TrackHeaderBox *Header;\r
-       struct __tag_media_box *Media;\r
-       GF_EditBox *editBox;\r
-       GF_TrackReferenceBox *References;\r
-       /*meta box if any*/\r
-       struct __tag_meta_box *meta;\r
-       /*other*/\r
-       GF_List *boxes;\r
-\r
-       GF_MovieBox *moov;\r
-       /*private for media padding*/\r
-       u32 padding_bytes;\r
-       /*private for editing*/\r
-       char *name;\r
-       /*private for editing*/\r
-       Bool is_unpacked;\r
-} GF_TrackBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u64 creationTime;\r
-       u64 modificationTime;\r
-       u32 timeScale;\r
-       u64 duration;\r
-       char packedLanguage[4];\r
-       u16 reserved;\r
-} GF_MediaHeaderBox;\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 reserved1;\r
-       u32 handlerType;\r
-       u8 reserved2[12];\r
-       char *nameUTF8;\r
-} GF_HandlerBox;\r
-\r
-typedef struct __tag_media_box\r
-{\r
-       GF_ISOM_BOX\r
-       GF_TrackBox *mediaTrack;\r
-       GF_MediaHeaderBox *mediaHeader;\r
-       GF_HandlerBox *handler;\r
-       struct __tag_media_info_box *information;\r
-       u64 BytesMissing;\r
-} GF_MediaBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u64 reserved;\r
-} GF_VideoMediaHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 reserved;\r
-} GF_SoundMediaHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       /*this is used for us INTERNALLY*/\r
-       u32 subType;\r
-       u32 maxPDUSize;\r
-       u32 avgPDUSize;\r
-       u32 maxBitrate;\r
-       u32 avgBitrate;\r
-       u32 slidingAverageBitrate;\r
-} GF_HintMediaHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-} GF_MPEGMediaHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-} GF_ODMediaHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-} GF_OCRMediaHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-} GF_SceneMediaHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *boxList;\r
-} GF_DataReferenceBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_DataReferenceBox *dref;\r
-} GF_DataInformationBox;\r
-\r
-#define GF_ISOM_DATAENTRY_FIELDS       \\r
-       char *location;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_ISOM_DATAENTRY_FIELDS\r
-} GF_DataEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_ISOM_DATAENTRY_FIELDS\r
-} GF_DataEntryURLBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_ISOM_DATAENTRY_FIELDS\r
-       char *nameURN;\r
-} GF_DataEntryURNBox;\r
-\r
-typedef struct\r
-{\r
-       u32 sampleCount;\r
-       u32 sampleDelta;\r
-} GF_SttsEntry;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_SttsEntry *entries;\r
-       u32 nb_entries, alloc_size;\r
-\r
-#ifndef GPAC_READ_ONLY\r
-       /*cache for WRITE*/\r
-       u32 w_currentSampleNum;\r
-       u64 w_LastDTS;\r
-#endif\r
-       /*cache for READ*/\r
-       u32 r_FirstSampleInEntry;\r
-       u32 r_currentEntryIndex;\r
-       u64 r_CurrentDTS;\r
-} GF_TimeToSampleBox;\r
-\r
-\r
-/*TO CHECK - it could be reasonnable to only use 16bits for both count and offset*/\r
-typedef struct\r
-{\r
-       u32 sampleCount;\r
-       u32 decodingOffset;\r
-} GF_DttsEntry;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_DttsEntry *entries;\r
-       u32 nb_entries, alloc_size;\r
-\r
-#ifndef GPAC_READ_ONLY\r
-       u32 w_LastSampleNumber;\r
-       /*force one sample per entry*/\r
-       Bool unpack_mode;\r
-#endif\r
-       /*Cache for read*/\r
-       u32 r_currentEntryIndex;\r
-       u32 r_FirstSampleInEntry;\r
-} GF_CompositionOffsetBox;\r
-\r
-\r
-typedef struct\r
-{\r
-       u32 SampleNumber;\r
-       u32 fragmentCount;\r
-       u16 *fragmentSizes;\r
-} GF_StsfEntry;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *entryList;\r
-#ifndef GPAC_READ_ONLY\r
-       /*Cache for write*/\r
-       GF_StsfEntry *w_currentEntry;\r
-       u32 w_currentEntryIndex;\r
-#endif\r
-       /*Cache for read*/\r
-       u32 r_currentEntryIndex;\r
-       GF_StsfEntry *r_currentEntry;\r
-} GF_SampleFragmentBox;\r
-\r
-\r
-#define GF_ISOM_SAMPLE_ENTRY_FIELDS            \\r
-       GF_ISOM_UUID_BOX                                        \\r
-       u16 dataReferenceIndex;                         \\r
-       char reserved[ 6 ];                                     \\r
-       struct __tag_protect_box *protection_info;\r
-\r
-/*base sample entry box (never used but for typecasting)*/\r
-typedef struct\r
-{\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS\r
-} GF_SampleEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS\r
-       /*box type as specified in the file (not this box's type!!)*/\r
-       u32 EntryType;\r
-\r
-       char *data;\r
-       u32 data_size;\r
-} GF_GenericSampleEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_ESD *desc;\r
-} GF_ESDBox;\r
-\r
-/*for all MPEG4 media except audio and video*/\r
-typedef struct\r
-{\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS\r
-       GF_ESDBox *esd;\r
-       /*used for hinting when extracting the OD stream...*/\r
-       GF_SLConfig *slc;\r
-} GF_MPEGSampleEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 hSpacing;\r
-       u32 vSpacing;\r
-} GF_PixelAspectRatioBox;\r
-\r
-\r
-#define GF_ISOM_VISUAL_SAMPLE_ENTRY            \\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS                     \\r
-       u16 version;                                            \\r
-       u16 revision;                                           \\r
-       u32 vendor;                                                     \\r
-       u32 temporal_quality;                           \\r
-       u32 spacial_quality;                            \\r
-       u16 Width, Height;                                      \\r
-       u32 horiz_res, vert_res;                        \\r
-       u32 entry_data_size;                            \\r
-       u16 frames_per_sample;                          \\r
-       char compressor_name[33];                       \\r
-       u16 bit_depth;                                          \\r
-       s16 color_table_index;                          \\r
-       GF_PixelAspectRatioBox *pasp;           \r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_VISUAL_SAMPLE_ENTRY\r
-} GF_VisualSampleEntryBox;\r
-\r
-void gf_isom_video_sample_entry_init(GF_VisualSampleEntryBox *ent);\r
-GF_Err gf_isom_video_sample_entry_read(GF_VisualSampleEntryBox *ptr, GF_BitStream *bs);\r
-#ifndef GPAC_READ_ONLY\r
-void gf_isom_video_sample_entry_write(GF_VisualSampleEntryBox *ent, GF_BitStream *bs);\r
-void gf_isom_video_sample_entry_size(GF_VisualSampleEntryBox *ent);\r
-#endif\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 bufferSizeDB;\r
-       u32 maxBitrate;\r
-       u32 avgBitrate;\r
-} GF_MPEG4BitRateBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_List *descriptors;\r
-} GF_MPEG4ExtensionDescriptorsBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_AVCConfig *config;\r
-} GF_AVCConfigurationBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_VISUAL_SAMPLE_ENTRY\r
-       GF_ESDBox *esd;\r
-       /*used for Publishing*/\r
-       GF_SLConfig *slc;\r
-\r
-       /*avc extensions - we merged with regular 'mp4v' box to handle isma E&A signaling of AVC*/\r
-       GF_AVCConfigurationBox *avc_config;\r
-       GF_MPEG4BitRateBox *bitrate;\r
-       /*ext descriptors*/\r
-       GF_MPEG4ExtensionDescriptorsBox *descr;\r
-       /*internally emulated esd*/\r
-       GF_ESD *emul_esd;\r
-       /*iPod's hack*/\r
-       GF_UnknownUUIDBox *ipod_ext;\r
-\r
-} GF_MPEGVisualSampleEntryBox;\r
-\r
-\r
-/*this is the default visual sdst (to handle unknown media)*/\r
-typedef struct\r
-{\r
-       GF_ISOM_VISUAL_SAMPLE_ENTRY\r
-       /*box type as specified in the file (not this box's type!!)*/\r
-       u32 EntryType;\r
-       /*opaque description data (ESDS in MP4, SMI in SVQ3, ...)*/\r
-       char *data;\r
-       u32 data_size;\r
-} GF_GenericVisualSampleEntryBox;\r
-\r
-\r
-#define GF_ISOM_AUDIO_SAMPLE_ENTRY     \\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS             \\r
-       u16 version;                                    \\r
-       u16 revision;                                   \\r
-       u32 vendor;                                             \\r
-       u16 channel_count;                              \\r
-       u16 bitspersample;                              \\r
-       u16 compression_id;                             \\r
-       u16 packet_size;                                \\r
-       u16 samplerate_hi;                              \\r
-       u16 samplerate_lo;\r
-\r
-\r
-typedef struct \r
-{\r
-       GF_ISOM_AUDIO_SAMPLE_ENTRY\r
-} GF_AudioSampleEntryBox;\r
-\r
-void gf_isom_audio_sample_entry_init(GF_AudioSampleEntryBox *ptr);\r
-GF_Err gf_isom_audio_sample_entry_read(GF_AudioSampleEntryBox *ptr, GF_BitStream *bs);\r
-#ifndef GPAC_READ_ONLY\r
-void gf_isom_audio_sample_entry_write(GF_AudioSampleEntryBox *ptr, GF_BitStream *bs);\r
-void gf_isom_audio_sample_entry_size(GF_AudioSampleEntryBox *ptr);\r
-#endif\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_AUDIO_SAMPLE_ENTRY\r
-       GF_ESDBox *esd;\r
-       GF_SLConfig *slc;\r
-} GF_MPEGAudioSampleEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_3GPConfig cfg;\r
-} GF_3GPPConfigBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_AUDIO_SAMPLE_ENTRY\r
-       GF_3GPPConfigBox *info;\r
-} GF_3GPPAudioSampleEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_VISUAL_SAMPLE_ENTRY\r
-       GF_3GPPConfigBox *info;\r
-} GF_3GPPVisualSampleEntryBox;\r
-\r
-/*this is the default visual sdst (to handle unknown media)*/\r
-typedef struct\r
-{\r
-       GF_ISOM_AUDIO_SAMPLE_ENTRY\r
-       /*box type as specified in the file (not this box's type!!)*/\r
-       u32 EntryType;\r
-       /*opaque description data (ESDS in MP4, ...)*/\r
-       char *data;\r
-       u32 data_size;\r
-} GF_GenericAudioSampleEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_AC3Config cfg;\r
-} GF_AC3ConfigBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_AUDIO_SAMPLE_ENTRY\r
-       GF_AC3ConfigBox *info;\r
-} GF_AC3SampleEntryBox;\r
-\r
-\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u8 profile;\r
-       u8 level;\r
-       u8 pathComponents;\r
-       Bool fullRequestHost;\r
-       Bool streamType;\r
-       u8 containsRedundant;\r
-       char *textEncoding;\r
-       char *contentEncoding;\r
-} GF_DIMSSceneConfigBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       char *content_script_types;\r
-} GF_DIMSScriptTypesBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS\r
-       GF_DIMSSceneConfigBox *config;\r
-       GF_MPEG4BitRateBox *bitrate;\r
-       GF_DIMSScriptTypesBox *scripts;\r
-} GF_DIMSSampleEntryBox;\r
-\r
-\r
-/*base sample entry box (never used but for typecasting)*/\r
-typedef struct\r
-{\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS\r
-       char *content_encoding; //optional\r
-       char *mime_type_or_namespace;   //not optional\r
-       char *xml_schema_loc;   // optional\r
-       GF_MPEG4BitRateBox *bitrate; // optional\r
-} GF_MetaDataSampleEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *boxList;\r
-} GF_SampleDescriptionBox;\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       /*if this is the compact version, sample size is actually fieldSize*/\r
-       u32 sampleSize;\r
-       u32 sampleCount;\r
-       u32 alloc_size;\r
-       u32 *sizes;\r
-} GF_SampleSizeBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 nb_entries;\r
-       u32 alloc_size;\r
-       u32 *offsets;\r
-} GF_ChunkOffsetBox;\r
-\r
-typedef struct \r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 nb_entries;\r
-       u32 alloc_size;\r
-       u64 *offsets;\r
-} GF_ChunkLargeOffsetBox;\r
-\r
-typedef struct\r
-{\r
-       u32 firstChunk;\r
-       u32 nextChunk;\r
-       u32 samplesPerChunk;\r
-       u32 sampleDescriptionIndex;\r
-       u8 isEdited;\r
-} GF_StscEntry;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_StscEntry *entries;\r
-       u32 alloc_size, nb_entries;\r
-\r
-       /*0-based cache for READ. In WRITE mode, we always have 1 sample per chunk so no need for a cache*/\r
-       u32 currentIndex;\r
-       /*first sample number in this chunk*/\r
-       u32 firstSampleInCurrentChunk;\r
-       u32 currentChunk;\r
-       u32 ghostNumber;\r
-} GF_SampleToChunkBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 alloc_size, nb_entries;\r
-       u32 *sampleNumbers;\r
-       /*cache for READ mode (in write we realloc no matter what)*/\r
-       u32 r_LastSyncSample;\r
-       /*0-based index in the array*/\r
-       u32 r_LastSampleIndex;\r
-} GF_SyncSampleBox;\r
-\r
-typedef struct\r
-{\r
-       u32 shadowedSampleNumber;\r
-       s32 syncSampleNumber;\r
-} GF_StshEntry;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *entries;\r
-       /*Cache for read mode*/\r
-       u32 r_LastEntryIndex;\r
-       u32 r_LastFoundSample;\r
-} GF_ShadowSyncBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 nb_entries;\r
-       u16 *priorities;\r
-} GF_DegradationPriorityBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 SampleCount;\r
-       u8 *padbits;\r
-} GF_PaddingBitsBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 sampleCount;\r
-       /*each dep type is packed on 1 byte*/\r
-       u8 *sample_info;\r
-} GF_SampleDependencyTypeBox;\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_TimeToSampleBox *TimeToSample;\r
-       GF_CompositionOffsetBox *CompositionOffset;\r
-       GF_SyncSampleBox *SyncSample;\r
-       GF_SampleDescriptionBox *SampleDescription;\r
-       GF_SampleSizeBox *SampleSize;\r
-       GF_SampleToChunkBox *SampleToChunk;\r
-       /*untyped, to handle 32 bits and 64 bits chunkOffsets*/\r
-       GF_Box *ChunkOffset;\r
-       GF_ShadowSyncBox *ShadowSync;\r
-       GF_DegradationPriorityBox *DegradationPriority;\r
-       GF_PaddingBitsBox *PaddingBits;\r
-       GF_SampleDependencyTypeBox *SampleDep;\r
-       GF_SampleFragmentBox *Fragments;\r
-\r
-       u32 MaxSamplePerChunk;\r
-       u16 groupID;\r
-       u16 trackPriority;\r
-       u32 currentEntryIndex;\r
-} GF_SampleTableBox;\r
-\r
-typedef struct __tag_media_info_box\r
-{\r
-       GF_ISOM_BOX\r
-       GF_DataInformationBox *dataInformation;\r
-       GF_SampleTableBox *sampleTable;\r
-       GF_Box *InfoHeader;\r
-       struct __tag_data_map *dataHandler;\r
-       u32 dataEntryIndex;\r
-       GF_List *boxes;\r
-} GF_MediaInformationBox;\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       char *data;\r
-       u32 dataSize;\r
-} GF_FreeSpaceBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       char packedLanguageCode[4];\r
-       char *notice;\r
-} GF_CopyrightBox;\r
-\r
-\r
-typedef struct\r
-{\r
-       char *name;\r
-       u64 start_time;\r
-} GF_ChapterEntry;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *list;\r
-} GF_ChapterListBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 reference_type;\r
-       u32 trackIDCount;\r
-       u32 *trackIDs;\r
-} GF_TrackReferenceTypeBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 majorBrand;\r
-       u32 minorVersion;\r
-       u32 altCount;\r
-       u32 *altBrand;\r
-} GF_FileTypeBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 *rates;\r
-       u32 *times;\r
-       u32 count;\r
-} GF_ProgressiveDownloadBox;\r
-\r
-\r
-/*\r
-       3GPP streaming text boxes\r
-*/\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 entry_count;\r
-       GF_FontRecord *fonts;\r
-} GF_FontTableBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS                             \\r
-       u32 displayFlags;\r
-       s8 horizontal_justification;\r
-       s8 vertical_justification;\r
-       /*ARGB*/\r
-       u32 back_color;\r
-       GF_BoxRecord default_box; \r
-       GF_StyleRecord  default_style;\r
-       GF_FontTableBox *font_table;\r
-} GF_TextSampleEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 entry_count;\r
-       GF_StyleRecord *styles;\r
-} GF_TextStyleBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u16 startcharoffset;\r
-       u16 endcharoffset; \r
-} GF_TextHighlightBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       /*ARGB*/\r
-       u32 hil_color;\r
-} GF_TextHighlightColorBox;\r
-\r
-typedef struct\r
-{\r
-       u32 highlight_endtime;\r
-       u16 start_charoffset;\r
-       u16 end_charoffset;\r
-} KaraokeRecord;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 highlight_starttime;\r
-       u16 nb_entries;\r
-       KaraokeRecord *records;\r
-} GF_TextKaraokeBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 scroll_delay;\r
-} GF_TextScrollDelayBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u16 startcharoffset;\r
-       u16 endcharoffset;\r
-       char *URL;\r
-       char *URL_hint;\r
-} GF_TextHyperTextBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_BoxRecord box;\r
-} GF_TextBoxBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u16 startcharoffset;\r
-       u16 endcharoffset;\r
-} GF_TextBlinkBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u8 wrap_flag;\r
-} GF_TextWrapBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 switchGroup;\r
-       u32 *attributeList;\r
-       u32 attributeListCount;\r
-} GF_TrackSelectionBox;\r
-\r
-/*\r
-       MPEG-21 extensions\r
-*/\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 xml_length;\r
-       char *xml;\r
-} GF_XMLBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 data_length;\r
-       char *data;\r
-} GF_BinaryXMLBox;\r
-\r
-typedef struct\r
-{\r
-       u64 extent_offset;\r
-       u64 extent_length;\r
-#ifndef GPAC_READ_OLNLY\r
-       /*for storage only*/\r
-       u64 original_extent_offset;\r
-#endif\r
-} GF_ItemExtentEntry;\r
-\r
-typedef struct \r
-{\r
-       u16 item_ID;\r
-       u16 data_reference_index;\r
-       u64 base_offset;\r
-#ifndef GPAC_READ_OLNLY\r
-       /*for storage only*/\r
-       u64 original_base_offset;\r
-#endif\r
-       GF_List *extent_entries;\r
-} GF_ItemLocationEntry;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u8 offset_size;\r
-    u8 length_size;\r
-       u8 base_offset_size;\r
-       GF_List *location_entries;\r
-} GF_ItemLocationBox;\r
-\r
-typedef        struct \r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u16 item_ID;\r
-} GF_PrimaryItemBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *protection_information;\r
-} GF_ItemProtectionBox;\r
-\r
-typedef struct \r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u16 item_ID;\r
-       u16 item_protection_index;\r
-       /*zero-terminated strings*/\r
-       char *item_name;\r
-       char *content_type;\r
-       char *content_encoding;\r
-       // needed to actually read the resource file, but not written in the MP21 file.\r
-       char *full_path;\r
-} GF_ItemInfoEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *item_infos;\r
-} GF_ItemInfoBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 data_format;\r
-} GF_OriginalFormatBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 scheme_type;\r
-       u32 scheme_version;\r
-       char *URI;\r
-} GF_SchemeTypeBox;\r
-\r
-/*ISMACryp specific*/\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       /*zero-terminated string*/\r
-       char *URI;\r
-} GF_ISMAKMSBox;\r
-\r
-/*ISMACryp specific*/\r
-typedef struct __isma_format_box\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u8 selective_encryption;\r
-       u8 key_indicator_length;\r
-       u8 IV_length;\r
-} GF_ISMASampleFormatBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_ISMAKMSBox *ikms;\r
-       GF_ISMASampleFormatBox *isfm;\r
-       struct __oma_kms_box *okms;\r
-} GF_SchemeInformationBox;\r
-\r
-typedef struct __tag_protect_box\r
-{\r
-       GF_ISOM_BOX\r
-       GF_OriginalFormatBox *original_format;\r
-       GF_SchemeTypeBox *scheme_type;\r
-       GF_SchemeInformationBox *info;\r
-} GF_ProtectionInfoBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_List *descriptors;\r
-} GF_IPMPInfoBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_IPMP_ToolList *ipmp_tools;\r
-       GF_List *descriptors;\r
-} GF_IPMPControlBox;\r
-\r
-\r
-typedef struct __tag_meta_box\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_HandlerBox *handler; \r
-       GF_PrimaryItemBox *primary_resource;\r
-       GF_DataInformationBox *file_locations;\r
-       GF_ItemLocationBox *item_locations;\r
-       GF_ItemProtectionBox *protections;\r
-       GF_ItemInfoBox *item_infos;\r
-       GF_IPMPControlBox *IPMP_control;\r
-       GF_List *other_boxes;\r
-} GF_MetaBox;\r
-\r
-\r
-\r
-\r
-#ifndef        GPAC_ISOM_NO_FRAGMENTS\r
-\r
-/*V2 boxes - Movie Fragments*/\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u64 fragment_duration;\r
-} GF_MovieExtendsHeaderBox;\r
-\r
-\r
-typedef struct __tag_mvex_box\r
-{\r
-       GF_ISOM_BOX\r
-       GF_List *TrackExList;\r
-       GF_MovieExtendsHeaderBox *mehd;\r
-       GF_ISOFile *mov;\r
-} GF_MovieExtendsBox;\r
-\r
-/*the TrackExtends contains default values for the track fragments*/\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 trackID;\r
-       u32 def_sample_desc_index;\r
-       u32 def_sample_duration;\r
-       u32 def_sample_size;\r
-       u32 def_sample_flags;\r
-       GF_TrackBox *track;\r
-} GF_TrackExtendsBox;\r
-\r
-/*indicates the seq num of this fragment*/\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 sequence_number;\r
-} GF_MovieFragmentHeaderBox;\r
-\r
-/*MovieFragment is a container IN THE FILE, contains 1 fragment*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_MovieFragmentHeaderBox *mfhd;\r
-       GF_List *TrackList;\r
-       GF_ISOFile *mov;\r
-} GF_MovieFragmentBox;\r
-\r
-\r
-/*FLAGS for TRAF*/\r
-enum\r
-{\r
-       GF_ISOM_TRAF_BASE_OFFSET        =       0x01,\r
-       GF_ISOM_TRAF_SAMPLE_DESC        =       0x02,\r
-       GF_ISOM_TRAF_SAMPLE_DUR =       0x08,\r
-       GF_ISOM_TRAF_SAMPLE_SIZE        =       0x10,\r
-       GF_ISOM_TRAF_SAMPLE_FLAGS       =       0x20,\r
-       GF_ISOM_TRAF_DUR_EMPTY  =       0x10000\r
-};\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 trackID;\r
-       /* all the following are optional fields */\r
-       u64 base_data_offset;\r
-       u32 sample_desc_index;\r
-       u32 def_sample_duration;\r
-       u32 def_sample_size;\r
-       u32 def_sample_flags;\r
-       u32 EmptyDuration;\r
-       u8 IFrameSwitching;\r
-} GF_TrackFragmentHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_TrackFragmentHeaderBox *tfhd;\r
-       GF_List *TrackRuns;\r
-       /*keep a pointer to default flags*/\r
-       GF_TrackExtendsBox *trex;\r
-       /*when data caching is on*/\r
-       u32 DataCache;\r
-} GF_TrackFragmentBox;\r
-\r
-/*FLAGS for TRUN : specify what is written in the SampleTable of TRUN*/\r
-enum\r
-{\r
-       GF_ISOM_TRUN_DATA_OFFSET        = 0x01,\r
-       GF_ISOM_TRUN_FIRST_FLAG         = 0x04,\r
-       GF_ISOM_TRUN_DURATION           = 0x100,\r
-       GF_ISOM_TRUN_SIZE                       = 0x200,\r
-       GF_ISOM_TRUN_FLAGS                      = 0x400,\r
-       GF_ISOM_TRUN_CTS_OFFSET         = 0x800\r
-};\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 sample_count;\r
-       /*the following are optional fields */\r
-       s32 data_offset;\r
-       u32 first_sample_flags;\r
-       /*can be empty*/\r
-       GF_List *entries;\r
-\r
-       /*in write mode with data caching*/\r
-       GF_BitStream *cache;\r
-} GF_TrackFragmentRunBox;\r
-\r
-typedef struct\r
-{\r
-       u32 Duration;\r
-       u32 size;\r
-       u32 flags;\r
-       u32 CTS_Offset;\r
-} GF_TrunEntry;\r
-\r
-#endif\r
-\r
-\r
-/*RTP Hint Track Sample Entry*/\r
-typedef struct\r
-{\r
-       GF_ISOM_SAMPLE_ENTRY_FIELDS\r
-       u16 HintTrackVersion;\r
-       u16 LastCompatibleVersion;\r
-       u32 MaxPacketSize;\r
-       GF_List *HintDataTable;\r
-       /*this is where we store the current RTP sample in read/write mode*/\r
-       struct __tag_hint_sample *hint_sample;\r
-       /*current hint sample in read mode, 1-based (0 is reset)*/\r
-       u32 cur_sample;\r
-       u32 pck_sn, ts_offset, ssrc;\r
-       GF_TrackReferenceTypeBox *hint_ref;\r
-} GF_HintSampleEntryBox;\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 subType;\r
-       char *sdpText;\r
-} GF_RTPBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       char *sdpText;\r
-} GF_SDPBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       s32 timeOffset;\r
-} GF_RTPOBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       /*contains GF_SDPBox if in track, GF_RTPBox if in movie*/\r
-       GF_Box *SDP;\r
-       GF_List *boxList;\r
-} GF_HintTrackInfoBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u8 reserved;\r
-       u8 prefered;\r
-       u8 required;\r
-} GF_RelyHintBox;\r
-\r
-/***********************************************************\r
-                       data entry tables for RTP\r
-***********************************************************/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 timeScale;\r
-} GF_TSHintEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 TimeOffset; \r
-} GF_TimeOffHintEntryBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 SeqOffset;\r
-} GF_SeqOffHintEntryBox;\r
-\r
-\r
-\r
-/***********************************************************\r
-                       hint track information boxes for RTP\r
-***********************************************************/\r
-\r
-/*Total number of bytes that will be sent, including 12-byte RTP headers, but not including any network headers*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u64 nbBytes;\r
-} GF_TRPYBox;\r
-\r
-/*32-bits version of trpy used in Darwin*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 nbBytes;\r
-} GF_TOTLBox;\r
-\r
-/*Total number of network packets that will be sent*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u64 nbPackets;\r
-} GF_NUMPBox;\r
-\r
-/*32-bits version of nump used in Darwin*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 nbPackets;\r
-} GF_NPCKBox;\r
-\r
-\r
-/*Total number of bytes that will be sent, not including 12-byte RTP headers*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u64 nbBytes;\r
-} GF_NTYLBox;\r
-\r
-/*32-bits version of tpyl used in Darwin*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 nbBytes;\r
-} GF_TPAYBox;\r
-\r
-/*Maximum data rate in bits per second.*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 granularity;\r
-       u32 maxDataRate;\r
-} GF_MAXRBox;\r
-\r
-\r
-/*Total number of bytes from the media track to be sent*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u64 nbBytes;\r
-} GF_DMEDBox;\r
-\r
-/*Number of bytes of immediate data to be sent*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u64 nbBytes;\r
-} GF_DIMMBox;\r
-\r
-\r
-/*Number of bytes of repeated data to be sent*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u64 nbBytes;\r
-} GF_DREPBox;\r
-\r
-/*Smallest relative transmission time, in milliseconds. signed integer for smoothing*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       s32 minTime;\r
-} GF_TMINBox;\r
-\r
-/*Largest relative transmission time, in milliseconds.*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       s32 maxTime;\r
-} GF_TMAXBox;\r
-\r
-/*Largest packet, in bytes, including 12-byte RTP header*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 maxSize;\r
-} GF_PMAXBox;\r
-\r
-/*Longest packet duration, in milliseconds*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 maxDur;\r
-} GF_DMAXBox;\r
-\r
-/*32-bit payload type number, followed by rtpmap payload string */\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       u32 payloadCode;\r
-       char *payloadString;\r
-} GF_PAYTBox;\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       char *string;\r
-} GF_NameBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_List *dataRates;\r
-       GF_List *boxList;\r
-} GF_HintInfoBox;\r
-\r
-/*Apple extension*/\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u32 reserved;\r
-       char *data;\r
-       u32 dataSize;\r
-} GF_DataBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_DataBox *data;\r
-} GF_ListItemBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_List *tags;\r
-} GF_ItemListBox;\r
-\r
-/*OMA (P)DCF extensions*/\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u8 EncryptionMethod;\r
-       u8 PaddingScheme;\r
-       u64 PlaintextLength;\r
-       char *ContentID;\r
-       char *RightsIssuerURL;\r
-       char *TextualHeaders;\r
-       u32 TextualHeadersLen;\r
-       GF_List *ExtendedHeaders;\r
-} GF_OMADRMCommonHeaderBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       u8 GKEncryptionMethod;\r
-       char *GroupID;\r
-       u16 GKLength;\r
-       char *GroupKey;\r
-} GF_OMADRMGroupIDBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BOX\r
-       GF_List *boxes;\r
-} GF_OMADRMMutableInformationBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       char TransactionID[16];\r
-} GF_OMADRMTransactionTrackingBox;\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       char *oma_ro;\r
-       u32 oma_ro_size;\r
-} GF_OMADRMRightsObjectBox;\r
-\r
-/*identical*/\r
-typedef struct __isma_format_box GF_OMADRMAUFormatBox;\r
-\r
-typedef struct __oma_kms_box\r
-{\r
-       GF_ISOM_FULL_BOX\r
-       GF_OMADRMCommonHeaderBox *hdr;\r
-       GF_OMADRMAUFormatBox *fmt;\r
-} GF_OMADRMKMSBox;\r
-\r
-\r
-\r
-/*\r
-               Data Map (media storage) stuff\r
-*/\r
-\r
-/*regular file IO*/\r
-#define GF_ISOM_DATA_FILE                      0x01\r
-/*File Mapaing object, read-only mode on complete files (no download)*/\r
-#define GF_ISOM_DATA_FILE_MAPPING              0x02\r
-/*External file object. Needs implementation*/\r
-#define GF_ISOM_DATA_FILE_EXTERN               0x03\r
-\r
-/*Data Map modes*/\r
-enum\r
-{\r
-       /*read mode*/\r
-       GF_ISOM_DATA_MAP_READ = 1,\r
-       /*write mode*/\r
-       GF_ISOM_DATA_MAP_WRITE = 2,\r
-       /*the following modes are just ways of signaling extended functionalities\r
-       edit mode, to make sure the file is here, set to GF_ISOM_DATA_MAP_READ afterwards*/\r
-       GF_ISOM_DATA_MAP_EDIT = 3,\r
-       /*read-only access to the movie file: we create a file mapping object\r
-       mode is set to GF_ISOM_DATA_MAP_READ afterwards*/\r
-       GF_ISOM_DATA_MAP_READ_ONLY = 4,\r
-};\r
-\r
-/*this is the DataHandler structure each data handler has its own bitstream*/\r
-#define GF_ISOM_BASE_DATA_HANDLER      \\r
-       u8      type;           \\r
-       u64     curPos;         \\r
-       u8      mode;           \\r
-       GF_BitStream *bs;\r
-\r
-typedef struct __tag_data_map\r
-{\r
-       GF_ISOM_BASE_DATA_HANDLER\r
-} GF_DataMap;\r
-\r
-typedef struct \r
-{\r
-       GF_ISOM_BASE_DATA_HANDLER\r
-       FILE *stream;\r
-       Bool last_acces_was_read;\r
-#ifndef GPAC_READ_ONLY\r
-       char *temp_file;\r
-#endif\r
-} GF_FileDataMap;\r
-\r
-/*file mapping handler. used if supported, only on read mode for complete files  (not in file download)*/\r
-typedef struct \r
-{\r
-       GF_ISOM_BASE_DATA_HANDLER\r
-       char *name;\r
-       u32 file_size;\r
-       char *byte_map;\r
-       u32 byte_pos;\r
-} GF_FileMappingDataMap;\r
-\r
-GF_Err gf_isom_datamap_new(const char *location, const char *parentPath, u8 mode, GF_DataMap **outDataMap);\r
-void gf_isom_datamap_del(GF_DataMap *ptr);\r
-GF_Err gf_isom_datamap_open(GF_MediaBox *minf, u32 dataRefIndex, u8 Edit);\r
-void gf_isom_datamap_close(GF_MediaInformationBox *minf);\r
-u32 gf_isom_datamap_get_data(GF_DataMap *map, char *buffer, u32 bufferLength, u64 Offset);\r
-\r
-/*File-based data map*/\r
-GF_DataMap *gf_isom_fdm_new(const char *sPath, u8 mode);\r
-void gf_isom_fdm_del(GF_FileDataMap *ptr);\r
-u32 gf_isom_fdm_get_data(GF_FileDataMap *ptr, char *buffer, u32 bufferLength, u64 fileOffset);\r
-\r
-#ifndef GPAC_READ_ONLY\r
-GF_DataMap *gf_isom_fdm_new_temp(const char *sTempPath);\r
-#endif\r
-\r
-/*file-mapping, read only*/\r
-GF_DataMap *gf_isom_fmo_new(const char *sPath, u8 mode);\r
-void gf_isom_fmo_del(GF_FileMappingDataMap *ptr);\r
-u32 gf_isom_fmo_get_data(GF_FileMappingDataMap *ptr, char *buffer, u32 bufferLength, u64 fileOffset);\r
-\r
-#ifndef GPAC_READ_ONLY\r
-u64 gf_isom_datamap_get_offset(GF_DataMap *map);\r
-GF_Err gf_isom_datamap_add_data(GF_DataMap *ptr, char *data, u32 dataSize);\r
-#endif \r
-\r
-/*\r
-               Movie stuff\r
-*/\r
-\r
-\r
-/*time def for MP4/QT/MJ2K files*/\r
-#define GF_ISOM_MAC_TIME_OFFSET 2082758400/*208284480 */\r
-\r
-#ifndef        GPAC_ISOM_NO_FRAGMENTS\r
-#define GF_ISOM_FORMAT_FRAG_FLAGS(pad, sync, deg) ( ( (pad) << 17) | ( ( !(sync) ) << 16) | (deg) );\r
-#define GF_ISOM_GET_FRAG_PAD(flag) ( (flag) >> 17) & 0x7\r
-#define GF_ISOM_GET_FRAG_SYNC(flag) ( ! ( ( (flag) >> 16) & 0x1))\r
-#define GF_ISOM_GET_FRAG_DEG(flag)     (flag) & 0x7FFF\r
-#endif\r
-\r
-enum\r
-{\r
-       GF_ISOM_FRAG_WRITE_READY        =       0x01,\r
-       GF_ISOM_FRAG_READ_DEBUG         =       0x02,\r
-};\r
-\r
-/*this is our movie object*/\r
-struct __tag_isom {\r
-       /*the last fatal error*/\r
-       GF_Err LastError;\r
-       /*the original filename*/\r
-       char *fileName;\r
-       /*the original file in read/edit, and also used in fragments mode\r
-       once the first moov has been written\r
-       Nota: this API doesn't allow fragments BEFORE the MOOV in order\r
-       to make easily parsable files (note there could be some data (mdat) before\r
-       the moov*/\r
-       GF_DataMap *movieFileMap;\r
-\r
-#ifndef GPAC_READ_ONLY\r
-       /*the final file name*/\r
-       char *finalName;\r
-       /*the file where we store edited samples (for READ_WRITE and WRITE mode only)*/\r
-       GF_DataMap *editFileMap;\r
-       /*the interleaving time for dummy mode (in movie TimeScale)*/\r
-       u32 interleavingTime;\r
-#endif\r
-\r
-       u8 openMode;\r
-       u8 storageMode;\r
-       /*if true 3GPP text streams are read as MPEG-4 StreamingText*/\r
-       u8 convert_streaming_text;\r
-       u8 is_jp2;\r
-\r
-       /*main boxes for fast access*/\r
-       /*moov*/\r
-       GF_MovieBox *moov;\r
-       /*our MDAT box (one and only one when we store the file)*/\r
-       GF_MediaDataBox *mdat;\r
-       /*file brand (since v2, NULL means mp4 v1)*/\r
-       GF_FileTypeBox *brand;\r
-       /*progressive download info*/\r
-       GF_ProgressiveDownloadBox *pdin;\r
-       /*meta box if any*/\r
-       GF_MetaBox *meta;\r
-\r
-#ifndef        GPAC_ISOM_NO_FRAGMENTS\r
-       u32 FragmentsFlags, NextMoofNumber;\r
-       /*active fragment*/\r
-       GF_MovieFragmentBox *moof;\r
-       /*in WRITE mode, this is the current MDAT where data is written*/\r
-       /*in READ mode this is the last valid file position before a gf_isom_box_read failed*/\r
-       u64 current_top_box_start;\r
-#endif\r
-\r
-       /*this contains ALL the root boxes excepts fragments*/\r
-       GF_List *TopBoxes;\r
-\r
-       /*default track for sync of MPEG4 streams - this is the first accessed stream without OCR info - only set in READ mode*/\r
-       s32 es_id_default_sync;\r
-};\r
-\r
-/*time function*/\r
-u64 gf_isom_get_mp4time();\r
-/*set the last error of the file. if file is NULL, set the static error (used for IO errors*/\r
-void gf_isom_set_last_error(GF_ISOFile *the_file, GF_Err error);\r
-GF_Err gf_isom_parse_movie_boxes(GF_ISOFile *mov, u64 *bytesMissing);\r
-GF_ISOFile *gf_isom_new_movie();\r
-/*Movie and Track access functions*/\r
-GF_TrackBox *gf_isom_get_track_from_file(GF_ISOFile *the_file, u32 trackNumber);\r
-GF_TrackBox *gf_isom_get_track(GF_MovieBox *moov, u32 trackNumber);\r
-GF_TrackBox *gf_isom_get_track_from_id(GF_MovieBox *moov, u32 trackID);\r
-u32 gf_isom_get_tracknum_from_id(GF_MovieBox *moov, u32 trackID);\r
-/*open a movie*/\r
-GF_ISOFile *gf_isom_open_file(const char *fileName, u32 OpenMode, const char *tmp_dir);\r
-/*close and delete a movie*/\r
-void gf_isom_delete_movie(GF_ISOFile *mov);\r
-/*StreamDescription reconstruction Functions*/\r
-GF_Err GetESD(GF_MovieBox *moov, u32 trackID, u32 StreamDescIndex, GF_ESD **outESD);\r
-GF_Err GetESDForTime(GF_MovieBox *moov, u32 trackID, u64 CTS, GF_ESD **outESD);\r
-GF_Err Media_GetSampleDesc(GF_MediaBox *mdia, u32 SampleDescIndex, GF_SampleEntryBox **out_entry, u32 *dataRefIndex);\r
-GF_Err Media_GetSampleDescIndex(GF_MediaBox *mdia, u64 DTS, u32 *sampleDescIndex);\r
-/*get esd for given sample desc - \r
-       @true_desc_only: if true doesn't emulate desc and returns native ESD,\r
-                               otherwise emulates if needed/possible (TimedText) and return a hard copy of the desc\r
-*/\r
-GF_Err Media_GetESD(GF_MediaBox *mdia, u32 sampleDescIndex, GF_ESD **esd, Bool true_desc_only);\r
-Bool Track_IsMPEG4Stream(u32 HandlerType);\r
-Bool IsMP4Description(u32 entryType);\r
-/*Find a reference of a given type*/\r
-GF_Err Track_FindRef(GF_TrackBox *trak, u32 ReferenceType, GF_TrackReferenceTypeBox **dpnd);\r
-/*Time and sample*/\r
-GF_Err GetMediaTime(GF_TrackBox *trak, u64 movieTime, u64 *MediaTime, s64 *SegmentStartTime, s64 *MediaOffset, u8 *useEdit);\r
-GF_Err Media_GetSample(GF_MediaBox *mdia, u32 sampleNumber, GF_ISOSample **samp, u32 *sampleDescriptionIndex, Bool no_data, u64 *out_offset);\r
-GF_Err Media_CheckDataEntry(GF_MediaBox *mdia, u32 dataEntryIndex);\r
-GF_Err Media_FindSyncSample(GF_SampleTableBox *stbl, u32 searchFromTime, u32 *sampleNumber, u8 mode);\r
-GF_Err Media_RewriteODFrame(GF_MediaBox *mdia, GF_ISOSample *sample);\r
-GF_Err Media_FindDataRef(GF_DataReferenceBox *dref, char *URLname, char *URNname, u32 *dataRefIndex);\r
-Bool Media_IsSelfContained(GF_MediaBox *mdia, u32 StreamDescIndex);\r
-\r
-/*check the TimeToSample for the given time and return the Sample number\r
-if the entry is not found, return the closest sampleNumber in prevSampleNumber and 0 in sampleNumber\r
-if the DTS required is after all DTSs in the list, set prevSampleNumber and SampleNumber to 0\r
-useCTS specifies that we're looking for a composition time\r
-*/\r
-GF_Err findEntryForTime(GF_SampleTableBox *stbl, u64 DTS, u8 useCTS, u32 *sampleNumber, u32 *prevSampleNumber);\r
-/*Reading of the sample tables*/\r
-GF_Err stbl_GetSampleSize(GF_SampleSizeBox *stsz, u32 SampleNumber, u32 *Size);\r
-GF_Err stbl_GetSampleCTS(GF_CompositionOffsetBox *ctts, u32 SampleNumber, u32 *CTSoffset);\r
-GF_Err stbl_GetSampleDTS(GF_TimeToSampleBox *stts, u32 SampleNumber, u64 *DTS);\r
-/*find a RAP or set the prev / next RAPs if vars are passed*/\r
-GF_Err stbl_GetSampleRAP(GF_SyncSampleBox *stss, u32 SampleNumber, u8 *IsRAP, u32 *prevRAP, u32 *nextRAP);\r
-GF_Err stbl_GetSampleInfos(GF_SampleTableBox *stbl, u32 sampleNumber, u64 *offset, u32 *chunkNumber, u32 *descIndex, u8 *isEdited);\r
-GF_Err stbl_GetSampleShadow(GF_ShadowSyncBox *stsh, u32 *sampleNumber, u32 *syncNum);\r
-GF_Err stbl_GetPaddingBits(GF_PaddingBitsBox *padb, u32 SampleNumber, u8 *PadBits);\r
-u32 stbl_GetSampleFragmentCount(GF_SampleFragmentBox *stsf, u32 sampleNumber);\r
-u32 stbl_GetSampleFragmentSize(GF_SampleFragmentBox *stsf, u32 sampleNumber, u32 FragmentIndex);\r
-GF_Err stbl_GetSampleDepType(GF_SampleDependencyTypeBox *stbl, u32 SampleNumber, u32 *dependsOn, u32 *dependedOn, u32 *redundant);\r
-\r
-/*unpack sample2chunk and chunk offset so that we have 1 sample per chunk (edition mode only)*/\r
-GF_Err stbl_UnpackOffsets(GF_SampleTableBox *stbl);\r
-GF_Err SetTrackDuration(GF_TrackBox *trak);\r
-GF_Err Media_SetDuration(GF_TrackBox *trak);\r
-\r
-/*rewrites 3GP samples desc as MPEG-4 ESD*/\r
-GF_Err gf_isom_get_ttxt_esd(GF_MediaBox *mdia, GF_ESD **out_esd);\r
-/*inserts TTU header - only used when conversion to StreamingText is on*/\r
-GF_Err gf_isom_rewrite_text_sample(GF_ISOSample *samp, u32 sampleDescriptionIndex, u32 sample_dur);\r
-\r
-GF_UserDataMap *udta_getEntry(GF_UserDataBox *ptr, u32 box_type, bin128 *uuid);\r
-\r
-#ifndef GPAC_READ_ONLY\r
-\r
-GF_Err FlushCaptureMode(GF_ISOFile *movie);\r
-GF_Err CanAccessMovie(GF_ISOFile *movie, u32 Mode);\r
-GF_ISOFile *gf_isom_create_movie(const char *fileName, u32 OpenMode, const char *tmp_dir);\r
-void gf_isom_insert_moov(GF_ISOFile *file);\r
-\r
-GF_Err WriteToFile(GF_ISOFile *movie);\r
-GF_Err Track_SetStreamDescriptor(GF_TrackBox *trak, u32 StreamDescriptionIndex, u32 DataReferenceIndex, GF_ESD *esd, u32 *outStreamIndex);\r
-u8 RequestTrack(GF_MovieBox *moov, u32 TrackID);\r
-/*Track-Media setup*/\r
-GF_Err NewMedia(GF_MediaBox **mdia, u32 MediaType, u32 TimeScale);\r
-GF_Err Media_ParseODFrame(GF_MediaBox *mdia, GF_ISOSample *sample, GF_ISOSample **od_samp);\r
-GF_Err Media_AddSample(GF_MediaBox *mdia, u64 data_offset, GF_ISOSample *sample, u32 StreamDescIndex, u32 syncShadowNumber);\r
-GF_Err Media_CreateDataRef(GF_DataReferenceBox *dref, char *URLname, char *URNname, u32 *dataRefIndex);\r
-/*update a media sample. ONLY in edit mode*/\r
-GF_Err Media_UpdateSample(GF_MediaBox *mdia, u32 sampleNumber, GF_ISOSample *sample, Bool data_only);\r
-GF_Err Media_UpdateSampleReference(GF_MediaBox *mdia, u32 sampleNumber, GF_ISOSample *sample, u64 data_offset);\r
-/*addition in the sample tables*/\r
-GF_Err stbl_AddDTS(GF_SampleTableBox *stbl, u64 DTS, u32 *sampleNumber, u32 LastAUDefDuration);\r
-GF_Err stbl_AddCTS(GF_SampleTableBox *stbl, u32 sampleNumber, u32 CTSoffset);\r
-GF_Err stbl_AddSize(GF_SampleSizeBox *stsz, u32 sampleNumber, u32 size);\r
-GF_Err stbl_AddRAP(GF_SyncSampleBox *stss, u32 sampleNumber);\r
-GF_Err stbl_AddShadow(GF_ShadowSyncBox *stsh, u32 sampleNumber, u32 shadowNumber);\r
-GF_Err stbl_AddChunkOffset(GF_MediaBox *mdia, u32 sampleNumber, u32 StreamDescIndex, u64 offset);\r
-/*NB - no add for padding, this is done only through SetPaddingBits*/\r
-\r
-GF_Err stbl_AddSampleFragment(GF_SampleTableBox *stbl, u32 sampleNumber, u16 size);\r
-\r
-/*update of the sample table\r
-all these functions are called in edit and we always have 1 sample per chunk*/\r
-GF_Err stbl_SetChunkOffset(GF_MediaBox *mdia, u32 sampleNumber, u64 offset);\r
-GF_Err stbl_SetSampleCTS(GF_SampleTableBox *stbl, u32 sampleNumber, u32 offset);\r
-GF_Err stbl_SetSampleSize(GF_SampleSizeBox *stsz, u32 SampleNumber, u32 size);\r
-GF_Err stbl_SetSampleRAP(GF_SyncSampleBox *stss, u32 SampleNumber, u8 isRAP);\r
-GF_Err stbl_SetSyncShadow(GF_ShadowSyncBox *stsh, u32 sampleNumber, u32 syncSample);\r
-GF_Err stbl_SetPaddingBits(GF_SampleTableBox *stbl, u32 SampleNumber, u8 bits);\r
-/*for adding fragmented samples*/\r
-GF_Err stbl_SampleSizeAppend(GF_SampleSizeBox *stsz, u32 data_size);\r
-/*writing of the final chunk info in edit mode*/\r
-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
-/*EDIT LIST functions*/\r
-GF_EdtsEntry *CreateEditEntry(u64 EditDuration, u64 MediaTime, u8 EditMode);\r
-\r
-GF_Err stbl_SetRedundant(GF_SampleTableBox *stbl, u32 sampleNumber);\r
-GF_Err stbl_AddRedundant(GF_SampleTableBox *stbl, u32 sampleNumber);\r
-\r
-/*REMOVE functions*/\r
-GF_Err stbl_RemoveDTS(GF_SampleTableBox *stbl, u32 sampleNumber, u32 LastAUDefDuration);\r
-GF_Err stbl_RemoveCTS(GF_SampleTableBox *stbl, u32 sampleNumber);\r
-GF_Err stbl_RemoveSize(GF_SampleSizeBox *stsz, u32 sampleNumber);\r
-GF_Err stbl_RemoveChunk(GF_SampleTableBox *stbl, u32 sampleNumber);\r
-GF_Err stbl_RemoveRAP(GF_SampleTableBox *stbl, u32 sampleNumber);\r
-GF_Err stbl_RemoveShadow(GF_ShadowSyncBox *stsh, u32 sampleNumber);\r
-GF_Err stbl_RemovePaddingBits(GF_SampleTableBox *stbl, u32 SampleNumber);\r
-GF_Err stbl_RemoveSampleFragments(GF_SampleTableBox *stbl, u32 sampleNumber);\r
-GF_Err stbl_RemoveRedundant(GF_SampleTableBox *stbl, u32 SampleNumber);\r
-\r
-#ifndef        GPAC_ISOM_NO_FRAGMENTS\r
-GF_Err StoreFragment(GF_ISOFile *movie);\r
-#endif\r
-\r
-#endif \r
-\r
-\r
-GF_Err GetNextMediaTime(GF_TrackBox *trak, u64 movieTime, u64 *OutMovieTime);\r
-GF_Err GetPrevMediaTime(GF_TrackBox *trak, u64 movieTime, u64 *OutMovieTime);\r
-\r
-Bool IsHintTrack(GF_TrackBox *trak);\r
-Bool CheckHintFormat(GF_TrackBox *trak, u32 HintType);\r
-u32 GetHintFormat(GF_TrackBox *trak);\r
-\r
-\r
-/*locate a box by its type or UUID*/\r
-GF_ItemListBox *gf_ismo_locate_box(GF_List *list, u32 boxType, bin128 UUID);\r
-\r
-GF_Err moov_AddBox(GF_Box *ptr, GF_Box *a);\r
-GF_Err tref_AddBox(GF_Box *ptr, GF_Box *a);\r
-GF_Err trak_AddBox(GF_Box *ptr, GF_Box *a);\r
-GF_Err mvex_AddBox(GF_Box *ptr, GF_Box *a);\r
-GF_Err stsd_AddBox(GF_SampleDescriptionBox *ptr, GF_Box *a);\r
-GF_Err hnti_AddBox(GF_HintTrackInfoBox *hnti, GF_Box *a);\r
-GF_Err udta_AddBox(GF_UserDataBox *ptr, GF_Box *a);\r
-GF_Err edts_AddBox(GF_Box *s, GF_Box *a);\r
-GF_Err stdp_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err sdtp_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dinf_AddBox(GF_Box *s, GF_Box *a);\r
-GF_Err minf_AddBox(GF_Box *s, GF_Box *a);\r
-GF_Err mdia_AddBox(GF_Box *s, GF_Box *a);\r
-GF_Err stbl_AddBox(GF_SampleTableBox *ptr, GF_Box *a);\r
-\r
-GF_Err AVC_UpdateESD(GF_MPEGVisualSampleEntryBox *avc, GF_ESD *esd);\r
-void AVC_RewriteESDescriptor(GF_MPEGVisualSampleEntryBox *avc);\r
-GF_Err reftype_AddRefTrack(GF_TrackReferenceTypeBox *ref, u32 trackID, u16 *outRefIndex);\r
-\r
-\r
-/*\r
-               Hinting stuff\r
-*/\r
-\r
-/*the HintType for each protocol*/\r
-enum\r
-{\r
-       GF_ISMO_HINT_RTP        = 1,\r
-       /*not supported yet*/\r
-       GF_ISMO_MPEG2_TS        = 2\r
-};\r
-\r
-/*****************************************************\r
-               RTP Data Entries\r
-*****************************************************/\r
-\r
-#define GF_ISMO_BASE_DTE_ENTRY \\r
-       u8 source;\r
-\r
-typedef struct\r
-{\r
-       GF_ISMO_BASE_DTE_ENTRY\r
-} GF_GenericDTE;\r
-\r
-typedef struct\r
-{\r
-       GF_ISMO_BASE_DTE_ENTRY\r
-} GF_EmptyDTE;\r
-\r
-typedef struct\r
-{\r
-       GF_ISMO_BASE_DTE_ENTRY\r
-       u8 dataLength;\r
-       char data[14];\r
-} GF_ImmediateDTE;\r
-\r
-typedef struct\r
-{\r
-       GF_ISMO_BASE_DTE_ENTRY\r
-       s8 trackRefIndex;\r
-       u32 sampleNumber;\r
-       u16 dataLength;\r
-       u32 byteOffset;\r
-       u16 bytesPerComp;\r
-       u16 samplesPerComp;\r
-} GF_SampleDTE;\r
-\r
-typedef struct\r
-{\r
-       GF_ISMO_BASE_DTE_ENTRY\r
-       s8 trackRefIndex;\r
-       u32 streamDescIndex;\r
-       u16 dataLength;\r
-       u32 byteOffset;\r
-       u32 reserved;\r
-} GF_StreamDescDTE;\r
-\r
-GF_GenericDTE *NewDTE(u8 type);\r
-void DelDTE(GF_GenericDTE *dte);\r
-GF_Err ReadDTE(GF_GenericDTE *dte, GF_BitStream *bs);\r
-GF_Err WriteDTE(GF_GenericDTE *dte, GF_BitStream *bs);\r
-GF_Err OffsetDTE(GF_GenericDTE *dte, u32 offset, u32 HintSampleNumber);\r
-\r
-/*****************************************************\r
-               RTP Sample\r
-*****************************************************/\r
-\r
-/*data cache when reading*/\r
-typedef struct __tag_hint_data_cache\r
-{\r
-       GF_ISOSample *samp;\r
-       GF_TrackBox *trak;\r
-       u32 sample_num;\r
-} GF_HintDataCache;\r
-\r
-\r
-typedef struct __tag_hint_sample\r
-{\r
-       /*used internally for future protocol support (write only)*/\r
-       u8 HintType;\r
-       /*QT packets*/\r
-       u16 reserved;\r
-       GF_List *packetTable;\r
-       char *AdditionalData;\r
-       u32 dataLength;\r
-       /*used internally for hinting*/\r
-       u64 TransmissionTime;\r
-       /*for read only, used to store samples fetched while building packets*/\r
-       GF_List *sample_cache;\r
-} GF_HintSample;\r
-\r
-GF_HintSample *gf_isom_hint_sample_new(u32 ProtocolType);\r
-void gf_isom_hint_sample_del(GF_HintSample *ptr);\r
-GF_Err gf_isom_hint_sample_read(GF_HintSample *ptr, GF_BitStream *bs, u32 sampleSize);\r
-GF_Err gf_isom_hint_sample_write(GF_HintSample *ptr, GF_BitStream *bs);\r
-u32 gf_isom_hint_sample_size(GF_HintSample *ptr);\r
-\r
-/*****************************************************\r
-               Hint Packets (generic packet for future protocol support)\r
-*****************************************************/\r
-#define GF_ISOM_BASE_PACKET                    \\r
-       s32 relativeTransTime;\r
-\r
-\r
-typedef struct\r
-{\r
-       GF_ISOM_BASE_PACKET\r
-} GF_HintPacket;\r
-\r
-GF_HintPacket *gf_isom_hint_pck_new(u8 HintType);\r
-void gf_isom_hint_pck_del(u8 HintType, GF_HintPacket *ptr);\r
-GF_Err gf_isom_hint_pck_read(u8 HintType, GF_HintPacket *ptr, GF_BitStream *bs);\r
-GF_Err gf_isom_hint_pck_write(u8 HintType, GF_HintPacket *ptr, GF_BitStream *bs);\r
-u32 gf_isom_hint_pck_size(u8 HintType, GF_HintPacket *ptr);\r
-GF_Err gf_isom_hint_pck_offset(u8 HintType, GF_HintPacket *ptr, u32 offset, u32 HintSampleNumber);\r
-GF_Err gf_isom_hint_pck_add_dte(u8 HintType, GF_HintPacket *ptr, GF_GenericDTE *dte, u8 AtBegin);\r
-/*get the size of the packet AS RECONSTRUCTED BY THE SERVER (without CSRC)*/\r
-u32 gf_isom_hint_pck_length(u8 HintType, GF_HintPacket *ptr);\r
-\r
-/*the RTP packet*/\r
-typedef struct\r
-{\r
-       GF_ISOM_BASE_PACKET     \r
-       \r
-       /*RTP Header*/\r
-       u8 P_bit;\r
-       u8 X_bit;\r
-       u8 M_bit;\r
-       /*on 7 bits */\r
-       u8 payloadType;\r
-       u16 SequenceNumber;\r
-       /*Hinting flags*/\r
-       u8 B_bit;\r
-       u8 R_bit;\r
-       /*ExtraInfos TLVs - not really used */\r
-       GF_List *TLV;\r
-       /*DataTable - contains the DTEs...*/\r
-       GF_List *DataTable;\r
-} GF_RTPPacket;\r
-\r
-GF_RTPPacket *gf_isom_hint_rtp_new();\r
-void gf_isom_hint_rtp_del(GF_RTPPacket *ptr);\r
-GF_Err gf_isom_hint_rtp_read(GF_RTPPacket *ptr, GF_BitStream *bs);\r
-GF_Err gf_isom_hint_rtp_write(GF_RTPPacket *ptr, GF_BitStream *bs);\r
-u32 gf_isom_hint_rtp_size(GF_RTPPacket *ptr);\r
-GF_Err gf_isom_hint_rtp_offset(GF_RTPPacket *ptr, u32 offset, u32 HintSampleNumber);\r
-u32 gf_isom_hint_rtp_length(GF_RTPPacket *ptr);\r
-\r
-\r
-\r
-struct _3gpp_text_sample \r
-{\r
-       char *text;\r
-       u32 len;\r
-       \r
-       GF_TextStyleBox *styles;\r
-       /*at most one of these*/\r
-       GF_TextHighlightColorBox *highlight_color;\r
-       GF_TextScrollDelayBox *scroll_delay;\r
-       GF_TextBoxBox *box;\r
-       GF_TextWrapBox *wrap;\r
-\r
-       GF_List *others;\r
-       GF_TextKaraokeBox *cur_karaoke;\r
-};\r
-\r
-GF_TextSample *gf_isom_parse_texte_sample(GF_BitStream *bs);\r
-GF_TextSample *gf_isom_parse_texte_sample_from_data(char *data, u32 dataLength);\r
-\r
-\r
-\r
-/*\r
-       these are exported just in case, there should never be needed outside the lib\r
-*/\r
-\r
-GF_Box *reftype_New();\r
-GF_Box *free_New();\r
-GF_Box *mdat_New();\r
-GF_Box *moov_New();\r
-GF_Box *mvhd_New();\r
-GF_Box *mdhd_New();\r
-GF_Box *vmhd_New();\r
-GF_Box *smhd_New();\r
-GF_Box *hmhd_New();\r
-GF_Box *nmhd_New();\r
-GF_Box *stbl_New();\r
-GF_Box *dinf_New();\r
-GF_Box *url_New();\r
-GF_Box *urn_New();\r
-GF_Box *cprt_New();\r
-GF_Box *chpl_New();\r
-GF_Box *hdlr_New();\r
-GF_Box *iods_New();\r
-GF_Box *trak_New();\r
-GF_Box *mp4s_New();\r
-GF_Box *mp4v_New();\r
-GF_Box *mp4a_New();\r
-GF_Box *edts_New();\r
-GF_Box *udta_New();\r
-GF_Box *dref_New();\r
-GF_Box *stsd_New();\r
-GF_Box *stts_New();\r
-GF_Box *ctts_New();\r
-GF_Box *stsh_New();\r
-GF_Box *elst_New();\r
-GF_Box *stsc_New();\r
-GF_Box *stsz_New();\r
-GF_Box *stco_New();\r
-GF_Box *stss_New();\r
-GF_Box *stdp_New();\r
-GF_Box *sdtp_New();\r
-GF_Box *co64_New();\r
-GF_Box *esds_New();\r
-GF_Box *minf_New();\r
-GF_Box *tkhd_New();\r
-GF_Box *tref_New();\r
-GF_Box *mdia_New();\r
-GF_Box *defa_New();\r
-GF_Box *uuid_New();\r
-GF_Box *void_New();\r
-GF_Box *stsf_New();\r
-GF_Box *gnrm_New();\r
-GF_Box *gnrv_New();\r
-GF_Box *gnra_New();\r
-GF_Box *pdin_New();\r
-\r
-void reftype_del(GF_Box *);\r
-void free_del(GF_Box *);\r
-void mdat_del(GF_Box *);\r
-void moov_del(GF_Box *);\r
-void mvhd_del(GF_Box *);\r
-void mdhd_del(GF_Box *);\r
-void vmhd_del(GF_Box *);\r
-void smhd_del(GF_Box *);\r
-void hmhd_del(GF_Box *);\r
-void nmhd_del(GF_Box *);\r
-void stbl_del(GF_Box *);\r
-void dinf_del(GF_Box *);\r
-void url_del(GF_Box *);\r
-void urn_del(GF_Box *);\r
-void chpl_del(GF_Box *);\r
-void cprt_del(GF_Box *);\r
-void hdlr_del(GF_Box *);\r
-void iods_del(GF_Box *);\r
-void trak_del(GF_Box *);\r
-void mp4s_del(GF_Box *);\r
-void mp4v_del(GF_Box *);\r
-void mp4a_del(GF_Box *);\r
-void edts_del(GF_Box *);\r
-void udta_del(GF_Box *);\r
-void dref_del(GF_Box *);\r
-void stsd_del(GF_Box *);\r
-void stts_del(GF_Box *);\r
-void ctts_del(GF_Box *);\r
-void stsh_del(GF_Box *);\r
-void elst_del(GF_Box *);\r
-void stsc_del(GF_Box *);\r
-void stsz_del(GF_Box *);\r
-void stco_del(GF_Box *);\r
-void stss_del(GF_Box *);\r
-void stdp_del(GF_Box *);\r
-void sdtp_del(GF_Box *);\r
-void co64_del(GF_Box *);\r
-void esds_del(GF_Box *);\r
-void minf_del(GF_Box *);\r
-void tkhd_del(GF_Box *);\r
-void tref_del(GF_Box *);\r
-void mdia_del(GF_Box *);\r
-void defa_del(GF_Box *);\r
-void uuid_del(GF_Box *);\r
-void void_del(GF_Box *);\r
-void stsf_del(GF_Box *);\r
-void gnrm_del(GF_Box *);\r
-void gnrv_del(GF_Box *);\r
-void gnra_del(GF_Box *);\r
-void pdin_del(GF_Box *);\r
-\r
-GF_Err reftype_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err free_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mdat_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err moov_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mvhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mdhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err vmhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err smhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hmhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err nmhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stbl_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dinf_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err url_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err urn_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err chpl_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err cprt_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hdlr_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iods_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err trak_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mp4s_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mp4v_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mp4a_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err edts_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err udta_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dref_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stts_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ctts_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsh_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err elst_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsc_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsz_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stco_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stss_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stdp_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err sdtp_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err co64_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err esds_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err minf_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tkhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tref_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mdia_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err defa_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err uuid_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err void_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsf_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err gnrm_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err gnrv_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err gnra_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err pdin_Write(GF_Box *s, GF_BitStream *bs);\r
-\r
-GF_Err reftype_Size(GF_Box *);\r
-GF_Err free_Size(GF_Box *);\r
-GF_Err mdat_Size(GF_Box *);\r
-GF_Err moov_Size(GF_Box *);\r
-GF_Err mvhd_Size(GF_Box *);\r
-GF_Err mdhd_Size(GF_Box *);\r
-GF_Err vmhd_Size(GF_Box *);\r
-GF_Err smhd_Size(GF_Box *);\r
-GF_Err hmhd_Size(GF_Box *);\r
-GF_Err nmhd_Size(GF_Box *);\r
-GF_Err stbl_Size(GF_Box *);\r
-GF_Err dinf_Size(GF_Box *);\r
-GF_Err url_Size(GF_Box *);\r
-GF_Err urn_Size(GF_Box *);\r
-GF_Err chpl_Size(GF_Box *);\r
-GF_Err cprt_Size(GF_Box *);\r
-GF_Err hdlr_Size(GF_Box *);\r
-GF_Err iods_Size(GF_Box *);\r
-GF_Err trak_Size(GF_Box *);\r
-GF_Err mp4s_Size(GF_Box *);\r
-GF_Err mp4v_Size(GF_Box *);\r
-GF_Err mp4a_Size(GF_Box *);\r
-GF_Err edts_Size(GF_Box *);\r
-GF_Err udta_Size(GF_Box *);\r
-GF_Err dref_Size(GF_Box *);\r
-GF_Err stsd_Size(GF_Box *);\r
-GF_Err stts_Size(GF_Box *);\r
-GF_Err ctts_Size(GF_Box *);\r
-GF_Err stsh_Size(GF_Box *);\r
-GF_Err elst_Size(GF_Box *);\r
-GF_Err stsc_Size(GF_Box *);\r
-GF_Err stsz_Size(GF_Box *);\r
-GF_Err stco_Size(GF_Box *);\r
-GF_Err stss_Size(GF_Box *);\r
-GF_Err stdp_Size(GF_Box *);\r
-GF_Err sdtp_Size(GF_Box *);\r
-GF_Err co64_Size(GF_Box *);\r
-GF_Err esds_Size(GF_Box *);\r
-GF_Err minf_Size(GF_Box *);\r
-GF_Err tkhd_Size(GF_Box *);\r
-GF_Err tref_Size(GF_Box *);\r
-GF_Err mdia_Size(GF_Box *);\r
-GF_Err defa_Size(GF_Box *);\r
-GF_Err uuid_Size(GF_Box *);\r
-GF_Err void_Size(GF_Box *);\r
-GF_Err stsf_Size(GF_Box *);\r
-GF_Err gnrm_Size(GF_Box *);\r
-GF_Err gnrv_Size(GF_Box *);\r
-GF_Err gnra_Size(GF_Box *);\r
-GF_Err pdin_Size(GF_Box *);\r
-\r
-GF_Err reftype_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err free_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mdat_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err moov_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mvhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mdhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err vmhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err smhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hmhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err nmhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stbl_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dinf_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err url_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err urn_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err chpl_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err cprt_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hdlr_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iods_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err trak_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mp4s_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mp4v_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mp4a_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err edts_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err udta_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dref_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stts_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ctts_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsh_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err elst_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsc_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsz_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stco_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stss_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stdp_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err sdtp_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err co64_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err esds_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err minf_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tkhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tref_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mdia_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err defa_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err uuid_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err void_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err stsf_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err pdin_Read(GF_Box *s, GF_BitStream *bs);\r
-\r
-\r
-GF_Box *hinf_New();\r
-GF_Box *trpy_New();\r
-GF_Box *totl_New();\r
-GF_Box *nump_New();\r
-GF_Box *npck_New();\r
-GF_Box *tpyl_New();\r
-GF_Box *tpay_New();\r
-GF_Box *maxr_New();\r
-GF_Box *dmed_New();\r
-GF_Box *dimm_New();\r
-GF_Box *drep_New();\r
-GF_Box *tmin_New();\r
-GF_Box *tmax_New();\r
-GF_Box *pmax_New();\r
-GF_Box *dmax_New();\r
-GF_Box *payt_New();\r
-GF_Box *name_New();\r
-GF_Box *rely_New();\r
-GF_Box *snro_New();\r
-GF_Box *tims_New();\r
-GF_Box *tsro_New();\r
-GF_Box *ghnt_New();\r
-GF_Box *hnti_New();\r
-GF_Box *sdp_New();\r
-GF_Box *rtpo_New();\r
-\r
-void hinf_del(GF_Box *s);\r
-void trpy_del(GF_Box *s);\r
-void totl_del(GF_Box *s);\r
-void nump_del(GF_Box *s);\r
-void npck_del(GF_Box *s);\r
-void tpyl_del(GF_Box *s);\r
-void tpay_del(GF_Box *s);\r
-void maxr_del(GF_Box *s);\r
-void dmed_del(GF_Box *s);\r
-void dimm_del(GF_Box *s);\r
-void drep_del(GF_Box *s);\r
-void tmin_del(GF_Box *s);\r
-void tmax_del(GF_Box *s);\r
-void pmax_del(GF_Box *s);\r
-void dmax_del(GF_Box *s);\r
-void payt_del(GF_Box *s);\r
-void name_del(GF_Box *s);\r
-void rely_del(GF_Box *s);\r
-void snro_del(GF_Box *s);\r
-void tims_del(GF_Box *s);\r
-void tsro_del(GF_Box *s);\r
-void ghnt_del(GF_Box *s);\r
-void hnti_del(GF_Box *a);\r
-void sdp_del(GF_Box *a);\r
-void rtpo_del(GF_Box *s);\r
-\r
-GF_Err hinf_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err trpy_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err totl_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err nump_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err npck_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tpyl_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tpay_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err maxr_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dmed_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dimm_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err drep_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tmin_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tmax_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err pmax_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dmax_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err payt_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err name_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err rely_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err snro_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tims_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tsro_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ghnt_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hnti_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err sdp_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err rtpo_Read(GF_Box *s, GF_BitStream *bs);\r
-\r
-GF_Err hinf_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err trpy_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err totl_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err nump_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err npck_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tpyl_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tpay_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err maxr_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dmed_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dimm_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err drep_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tmin_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tmax_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err pmax_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dmax_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err payt_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err name_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err rely_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err snro_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tims_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tsro_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ghnt_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hnti_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err sdp_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err rtpo_Write(GF_Box *s, GF_BitStream *bs);\r
-\r
-GF_Err hinf_Size(GF_Box *s);\r
-GF_Err trpy_Size(GF_Box *s);\r
-GF_Err totl_Size(GF_Box *s);\r
-GF_Err nump_Size(GF_Box *s);\r
-GF_Err npck_Size(GF_Box *s);\r
-GF_Err tpyl_Size(GF_Box *s);\r
-GF_Err tpay_Size(GF_Box *s);\r
-GF_Err maxr_Size(GF_Box *s);\r
-GF_Err dmed_Size(GF_Box *s);\r
-GF_Err dimm_Size(GF_Box *s);\r
-GF_Err drep_Size(GF_Box *s);\r
-GF_Err tmin_Size(GF_Box *s);\r
-GF_Err tmax_Size(GF_Box *s);\r
-GF_Err pmax_Size(GF_Box *s);\r
-GF_Err dmax_Size(GF_Box *s);\r
-GF_Err payt_Size(GF_Box *s);\r
-GF_Err name_Size(GF_Box *s);\r
-GF_Err rely_Size(GF_Box *s);\r
-GF_Err snro_Size(GF_Box *s);\r
-GF_Err tims_Size(GF_Box *s);\r
-GF_Err tsro_Size(GF_Box *s);\r
-GF_Err ghnt_Size(GF_Box *s);\r
-GF_Err hnti_Size(GF_Box *s);\r
-GF_Err sdp_Size(GF_Box *s);\r
-GF_Err rtpo_Size(GF_Box *s);\r
-\r
-\r
-GF_Box *ftyp_New();\r
-void ftyp_del(GF_Box *s);\r
-GF_Err ftyp_Read(GF_Box *s,GF_BitStream *bs);\r
-GF_Err ftyp_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ftyp_Size(GF_Box *s);\r
-\r
-GF_Box *padb_New();\r
-void padb_del(GF_Box *s);\r
-GF_Err padb_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err padb_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err padb_Size(GF_Box *s);\r
-\r
-GF_Box *gppa_New(u32 type);\r
-GF_Box *gppv_New(u32 type);\r
-GF_Box *gppc_New(u32 type);\r
-void gppa_del(GF_Box *s);\r
-void gppv_del(GF_Box *s);\r
-void gppc_del(GF_Box *s);\r
-GF_Err gppa_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err gppv_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err gppc_Read(GF_Box *s, GF_BitStream *bs);\r
-#ifndef GPAC_READ_ONLY\r
-GF_Err gppa_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err gppv_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err gppc_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err gppa_Size(GF_Box *s);\r
-GF_Err gppv_Size(GF_Box *s);\r
-GF_Err gppc_Size(GF_Box *s);\r
-#endif\r
-\r
-\r
-#ifndef        GPAC_ISOM_NO_FRAGMENTS\r
-GF_Box *mvex_New();\r
-GF_Box *trex_New();\r
-GF_Box *moof_New();\r
-GF_Box *mfhd_New();\r
-GF_Box *traf_New();\r
-GF_Box *tfhd_New();\r
-GF_Box *trun_New();\r
-\r
-void mvex_del(GF_Box *s);\r
-void trex_del(GF_Box *s);\r
-void moof_del(GF_Box *s);\r
-void mfhd_del(GF_Box *s);\r
-void traf_del(GF_Box *s);\r
-void tfhd_del(GF_Box *s);\r
-void trun_del(GF_Box *s);\r
-\r
-GF_Err mvex_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err trex_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err moof_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mfhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err traf_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tfhd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err trun_Read(GF_Box *s, GF_BitStream *bs);\r
-\r
-GF_Err mvex_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err trex_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err moof_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mfhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err traf_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tfhd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err trun_Write(GF_Box *s, GF_BitStream *bs);\r
-\r
-GF_Err mvex_Size(GF_Box *s);\r
-GF_Err trex_Size(GF_Box *s);\r
-GF_Err moof_Size(GF_Box *s);\r
-GF_Err mfhd_Size(GF_Box *s);\r
-GF_Err traf_Size(GF_Box *s);\r
-GF_Err tfhd_Size(GF_Box *s);\r
-GF_Err trun_Size(GF_Box *s);\r
-\r
-\r
-GF_Box *mehd_New();\r
-void mehd_del(GF_Box *s);\r
-GF_Err mehd_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mehd_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mehd_Size(GF_Box *s);\r
-\r
-#endif \r
-\r
-/*avc ext*/\r
-GF_Box *avcc_New();\r
-void avcc_del(GF_Box *s);\r
-GF_Err avcc_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err avcc_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err avcc_Size(GF_Box *s);\r
-\r
-GF_Box *avc1_New();\r
-\r
-GF_Box *m4ds_New();\r
-void m4ds_del(GF_Box *s);\r
-GF_Err m4ds_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err m4ds_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err m4ds_Size(GF_Box *s);\r
-\r
-GF_Box *btrt_New();\r
-void btrt_del(GF_Box *s);\r
-GF_Err btrt_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err btrt_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err btrt_Size(GF_Box *s);\r
-\r
-\r
-/*3GPP streaming text*/\r
-GF_Box *ftab_New();\r
-GF_Box *tx3g_New();\r
-GF_Box *styl_New();\r
-GF_Box *hlit_New();\r
-GF_Box *hclr_New();\r
-GF_Box *krok_New();\r
-GF_Box *dlay_New();\r
-GF_Box *href_New();\r
-GF_Box *tbox_New();\r
-GF_Box *blnk_New();\r
-GF_Box *twrp_New();\r
-\r
-void ftab_del(GF_Box *s);\r
-void tx3g_del(GF_Box *s);\r
-void styl_del(GF_Box *s);\r
-void hlit_del(GF_Box *s);\r
-void hclr_del(GF_Box *s);\r
-void krok_del(GF_Box *s);\r
-void dlay_del(GF_Box *s);\r
-void href_del(GF_Box *s);\r
-void tbox_del(GF_Box *s);\r
-void blnk_del(GF_Box *s);\r
-void twrp_del(GF_Box *s);\r
-\r
-GF_Err ftab_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tx3g_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err styl_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hlit_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hclr_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err krok_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dlay_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err href_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tbox_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err blnk_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err twrp_Read(GF_Box *s, GF_BitStream *bs);\r
-\r
-#ifndef GPAC_READ_ONLY\r
-GF_Err ftab_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tx3g_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err styl_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hlit_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err hclr_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err krok_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dlay_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err href_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tbox_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err blnk_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err twrp_Write(GF_Box *s, GF_BitStream *bs);\r
-\r
-GF_Err ftab_Size(GF_Box *s);\r
-GF_Err tx3g_Size(GF_Box *s);\r
-GF_Err styl_Size(GF_Box *s);\r
-GF_Err hlit_Size(GF_Box *s);\r
-GF_Err hclr_Size(GF_Box *s);\r
-GF_Err krok_Size(GF_Box *s);\r
-GF_Err dlay_Size(GF_Box *s);\r
-GF_Err href_Size(GF_Box *s);\r
-GF_Err tbox_Size(GF_Box *s);\r
-GF_Err blnk_Size(GF_Box *s);\r
-GF_Err twrp_Size(GF_Box *s);\r
-#endif\r
-\r
-\r
-/* MPEG-21 functions */\r
-GF_Box *meta_New();\r
-GF_Box *xml_New();\r
-GF_Box *bxml_New();\r
-GF_Box *iloc_New();\r
-GF_Box *pitm_New();\r
-GF_Box *ipro_New();\r
-GF_Box *infe_New();\r
-GF_Box *iinf_New();\r
-GF_Box *sinf_New();\r
-GF_Box *frma_New();\r
-GF_Box *schm_New();\r
-GF_Box *schi_New();\r
-GF_Box *enca_New();\r
-GF_Box *encv_New();\r
-GF_Box *encs_New();\r
-\r
-void meta_del(GF_Box *s);\r
-void xml_del(GF_Box *s);\r
-void bxml_del(GF_Box *s);\r
-void iloc_del(GF_Box *s);\r
-void pitm_del(GF_Box *s);\r
-void ipro_del(GF_Box *s);\r
-void infe_del(GF_Box *s);\r
-void iinf_del(GF_Box *s);\r
-void sinf_del(GF_Box *s);\r
-void frma_del(GF_Box *s);\r
-void schm_del(GF_Box *s);\r
-void schi_del(GF_Box *s);\r
-\r
-GF_Err meta_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err xml_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err bxml_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iloc_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err pitm_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ipro_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err infe_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iinf_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err sinf_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err frma_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err schm_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err schi_Read(GF_Box *s, GF_BitStream *bs);\r
-\r
-#ifndef GPAC_READ_ONLY\r
-GF_Err meta_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err xml_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err bxml_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iloc_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err pitm_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ipro_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err infe_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iinf_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err sinf_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err frma_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err schm_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err schi_Write(GF_Box *s, GF_BitStream *bs);\r
-\r
-GF_Err meta_Size(GF_Box *s);\r
-GF_Err xml_Size(GF_Box *s);\r
-GF_Err bxml_Size(GF_Box *s);\r
-GF_Err iloc_Size(GF_Box *s);\r
-GF_Err pitm_Size(GF_Box *s);\r
-GF_Err ipro_Size(GF_Box *s);\r
-GF_Err infe_Size(GF_Box *s);\r
-GF_Err iinf_Size(GF_Box *s);\r
-GF_Err sinf_Size(GF_Box *s);\r
-GF_Err frma_Size(GF_Box *s);\r
-GF_Err schm_Size(GF_Box *s);\r
-GF_Err schi_Size(GF_Box *s);\r
-#endif\r
-\r
-/* end of MPEG-21 functions */\r
-\r
-\r
-/** ISMACryp functions **/\r
-GF_Box *iKMS_New();\r
-GF_Box *iSFM_New();\r
-void iKMS_del(GF_Box *s);\r
-void iSFM_del(GF_Box *s);\r
-GF_Err iKMS_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iSFM_Read(GF_Box *s, GF_BitStream *bs);\r
-#ifndef GPAC_READ_ONLY\r
-GF_Err iKMS_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iSFM_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err iKMS_Size(GF_Box *s);\r
-GF_Err iSFM_Size(GF_Box *s);\r
-#endif\r
-\r
-/* Apple extensions */\r
-void ilst_del(GF_Box *s);\r
-void ListItem_del(GF_Box *s);\r
-void data_del(GF_Box *s);\r
-GF_Err ilst_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ListItem_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err data_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Box *ilst_New();\r
-GF_Box *ListItem_New(u32 type);\r
-GF_Box *data_New();\r
-#ifndef GPAC_READ_ONLY\r
-GF_Err ilst_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ListItem_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err data_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ilst_Size(GF_Box *s);\r
-GF_Err ListItem_Size(GF_Box *s);\r
-GF_Err data_Size(GF_Box *s);\r
-#endif\r
-\r
-\r
-GF_Err gb_box_array_dump(GF_List *list, FILE * trace);\r
-GF_Err reftype_dump(GF_Box *a, FILE * trace);\r
-GF_Err free_dump(GF_Box *a, FILE * trace);\r
-GF_Err mdat_dump(GF_Box *a, FILE * trace);\r
-GF_Err moov_dump(GF_Box *a, FILE * trace);\r
-GF_Err mvhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err mdhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err vmhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err smhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err hmhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err nmhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err stbl_dump(GF_Box *a, FILE * trace);\r
-GF_Err dinf_dump(GF_Box *a, FILE * trace);\r
-GF_Err url_dump(GF_Box *a, FILE * trace);\r
-GF_Err urn_dump(GF_Box *a, FILE * trace);\r
-GF_Err cprt_dump(GF_Box *a, FILE * trace);\r
-GF_Err hdlr_dump(GF_Box *a, FILE * trace);\r
-GF_Err iods_dump(GF_Box *a, FILE * trace);\r
-GF_Err trak_dump(GF_Box *a, FILE * trace);\r
-GF_Err mp4s_dump(GF_Box *a, FILE * trace);\r
-GF_Err mp4v_dump(GF_Box *a, FILE * trace);\r
-GF_Err mp4a_dump(GF_Box *a, FILE * trace);\r
-GF_Err edts_dump(GF_Box *a, FILE * trace);\r
-GF_Err udta_dump(GF_Box *a, FILE * trace);\r
-GF_Err dref_dump(GF_Box *a, FILE * trace);\r
-GF_Err stsd_dump(GF_Box *a, FILE * trace);\r
-GF_Err stts_dump(GF_Box *a, FILE * trace);\r
-GF_Err ctts_dump(GF_Box *a, FILE * trace);\r
-GF_Err stsh_dump(GF_Box *a, FILE * trace);\r
-GF_Err elst_dump(GF_Box *a, FILE * trace);\r
-GF_Err stsc_dump(GF_Box *a, FILE * trace);\r
-GF_Err stsz_dump(GF_Box *a, FILE * trace);\r
-GF_Err stco_dump(GF_Box *a, FILE * trace);\r
-GF_Err stss_dump(GF_Box *a, FILE * trace);\r
-GF_Err stdp_dump(GF_Box *a, FILE * trace);\r
-GF_Err sdtp_dump(GF_Box *a, FILE * trace);\r
-GF_Err co64_dump(GF_Box *a, FILE * trace);\r
-GF_Err esds_dump(GF_Box *a, FILE * trace);\r
-GF_Err minf_dump(GF_Box *a, FILE * trace);\r
-GF_Err tkhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err tref_dump(GF_Box *a, FILE * trace);\r
-GF_Err mdia_dump(GF_Box *a, FILE * trace);\r
-GF_Err defa_dump(GF_Box *a, FILE * trace);\r
-GF_Err void_dump(GF_Box *a, FILE * trace);\r
-GF_Err ftyp_dump(GF_Box *a, FILE * trace);\r
-GF_Err padb_dump(GF_Box *a, FILE * trace);\r
-GF_Err stsf_dump(GF_Box *a, FILE * trace);\r
-GF_Err gnrm_dump(GF_Box *a, FILE * trace);\r
-GF_Err gnrv_dump(GF_Box *a, FILE * trace);\r
-GF_Err gnra_dump(GF_Box *a, FILE * trace);\r
-GF_Err gppa_dump(GF_Box *a, FILE * trace);\r
-GF_Err gppv_dump(GF_Box *a, FILE * trace);\r
-GF_Err gppc_dump(GF_Box *a, FILE * trace);\r
-GF_Err chpl_dump(GF_Box *a, FILE * trace);\r
-GF_Err dpin_dump(GF_Box *a, FILE * trace);\r
-\r
-GF_Err hinf_dump(GF_Box *a, FILE * trace);\r
-GF_Err trpy_dump(GF_Box *a, FILE * trace);\r
-GF_Err totl_dump(GF_Box *a, FILE * trace);\r
-GF_Err nump_dump(GF_Box *a, FILE * trace);\r
-GF_Err npck_dump(GF_Box *a, FILE * trace);\r
-GF_Err tpyl_dump(GF_Box *a, FILE * trace);\r
-GF_Err tpay_dump(GF_Box *a, FILE * trace);\r
-GF_Err maxr_dump(GF_Box *a, FILE * trace);\r
-GF_Err dmed_dump(GF_Box *a, FILE * trace);\r
-GF_Err dimm_dump(GF_Box *a, FILE * trace);\r
-GF_Err drep_dump(GF_Box *a, FILE * trace);\r
-GF_Err tmin_dump(GF_Box *a, FILE * trace);\r
-GF_Err tmax_dump(GF_Box *a, FILE * trace);\r
-GF_Err pmax_dump(GF_Box *a, FILE * trace);\r
-GF_Err dmax_dump(GF_Box *a, FILE * trace);\r
-GF_Err payt_dump(GF_Box *a, FILE * trace);\r
-GF_Err name_dump(GF_Box *a, FILE * trace);\r
-GF_Err rely_dump(GF_Box *a, FILE * trace);\r
-GF_Err snro_dump(GF_Box *a, FILE * trace);\r
-GF_Err tims_dump(GF_Box *a, FILE * trace);\r
-GF_Err tsro_dump(GF_Box *a, FILE * trace);\r
-GF_Err ghnt_dump(GF_Box *a, FILE * trace);\r
-GF_Err hnti_dump(GF_Box *a, FILE * trace);\r
-GF_Err sdp_dump(GF_Box *a, FILE * trace);\r
-GF_Err rtpo_dump(GF_Box *a, FILE * trace);\r
-\r
-\r
-\r
-#ifndef        GPAC_ISOM_NO_FRAGMENTS\r
-GF_Err mvex_dump(GF_Box *a, FILE * trace);\r
-GF_Err mehd_dump(GF_Box *a, FILE * trace);\r
-GF_Err trex_dump(GF_Box *a, FILE * trace);\r
-GF_Err moof_dump(GF_Box *a, FILE * trace);\r
-GF_Err mfhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err traf_dump(GF_Box *a, FILE * trace);\r
-GF_Err tfhd_dump(GF_Box *a, FILE * trace);\r
-GF_Err trun_dump(GF_Box *a, FILE * trace);\r
-#endif\r
-\r
-GF_Err avcc_dump(GF_Box *a, FILE * trace);\r
-GF_Err avc1_dump(GF_Box *a, FILE * trace);\r
-GF_Err m4ds_dump(GF_Box *a, FILE * trace);\r
-GF_Err btrt_dump(GF_Box *a, FILE * trace);\r
-\r
-GF_Err ftab_dump(GF_Box *a, FILE * trace);\r
-GF_Err tx3g_dump(GF_Box *a, FILE * trace);\r
-GF_Err styl_dump(GF_Box *a, FILE * trace);\r
-GF_Err hlit_dump(GF_Box *a, FILE * trace);\r
-GF_Err hclr_dump(GF_Box *a, FILE * trace);\r
-GF_Err krok_dump(GF_Box *a, FILE * trace);\r
-GF_Err dlay_dump(GF_Box *a, FILE * trace);\r
-GF_Err href_dump(GF_Box *a, FILE * trace);\r
-GF_Err tbox_dump(GF_Box *a, FILE * trace);\r
-GF_Err blnk_dump(GF_Box *a, FILE * trace);\r
-GF_Err twrp_dump(GF_Box *a, FILE * trace);\r
-\r
-/* ISMACryp dump */\r
-GF_Err iKMS_dump(GF_Box *a, FILE * trace);\r
-GF_Err iSFM_dump(GF_Box *a, FILE * trace);\r
-\r
-/*MPEG-21 extensions dump*/\r
-GF_Err meta_dump(GF_Box *a, FILE * trace);\r
-GF_Err xml_dump(GF_Box *a, FILE * trace);\r
-GF_Err bxml_dump(GF_Box *a, FILE * trace);\r
-GF_Err iloc_dump(GF_Box *a, FILE * trace);\r
-GF_Err pitm_dump(GF_Box *a, FILE * trace);\r
-GF_Err ipro_dump(GF_Box *a, FILE * trace);\r
-GF_Err infe_dump(GF_Box *a, FILE * trace);\r
-GF_Err iinf_dump(GF_Box *a, FILE * trace);\r
-GF_Err sinf_dump(GF_Box *a, FILE * trace);\r
-GF_Err frma_dump(GF_Box *a, FILE * trace);\r
-GF_Err schm_dump(GF_Box *a, FILE * trace);\r
-GF_Err schi_dump(GF_Box *a, FILE * trace);\r
-\r
-/*Apple extensions*/\r
-GF_Err ilst_dump(GF_Box *a, FILE * trace);\r
-GF_Err ListItem_dump(GF_Box *a, FILE * trace);\r
-GF_Err data_dump(GF_Box *a, FILE * trace);\r
-\r
-/*Apple extensions*/\r
-GF_MetaBox *gf_isom_apple_get_meta_extensions(GF_ISOFile *mov);\r
-\r
-#ifndef GPAC_READ_ONLY\r
-GF_MetaBox *gf_isom_apple_create_meta_extensions(GF_ISOFile *mov);\r
-#endif //GPAC_READ_ONLY\r
-\r
-/*OMA extensions*/\r
-GF_Box *ohdr_New();\r
-void ohdr_del(GF_Box *s);\r
-GF_Err ohdr_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ohdr_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ohdr_Size(GF_Box *s);\r
-GF_Err ohdr_dump(GF_Box *a, FILE * trace);\r
-GF_Box *grpi_New();\r
-void grpi_del(GF_Box *s);\r
-GF_Err grpi_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err grpi_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err grpi_Size(GF_Box *s);\r
-GF_Err grpi_dump(GF_Box *a, FILE * trace);\r
-GF_Box *mdri_New();\r
-void mdri_del(GF_Box *s);\r
-GF_Err mdri_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mdri_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err mdri_Size(GF_Box *s);\r
-GF_Err mdri_dump(GF_Box *a, FILE * trace);\r
-GF_Box *odtt_New();\r
-void odtt_del(GF_Box *s);\r
-GF_Err odtt_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err odtt_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err odtt_Size(GF_Box *s);\r
-GF_Err odtt_dump(GF_Box *a, FILE * trace);\r
-GF_Box *odrb_New();\r
-void odrb_del(GF_Box *s);\r
-GF_Err odrb_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err odrb_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err odrb_Size(GF_Box *s);\r
-GF_Err odrb_dump(GF_Box *a, FILE * trace);\r
-GF_Box *odkm_New();\r
-void odkm_del(GF_Box *s);\r
-GF_Err odkm_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err odkm_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err odkm_Size(GF_Box *s);\r
-GF_Err odkm_dump(GF_Box *a, FILE * trace);\r
-\r
-\r
-GF_Box *pasp_New();\r
-void pasp_del(GF_Box *s);\r
-GF_Err pasp_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err pasp_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err pasp_Size(GF_Box *s);\r
-GF_Err pasp_dump(GF_Box *a, FILE * trace);\r
-\r
-GF_Box *metx_New(u32 type);\r
-void metx_del(GF_Box *s);\r
-GF_Err metx_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err metx_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err metx_Size(GF_Box *s);\r
-GF_Err metx_dump(GF_Box *a, FILE * trace);\r
-\r
-\r
-\r
-GF_Box *tsel_New();\r
-void tsel_del(GF_Box *s);\r
-GF_Err tsel_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tsel_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err tsel_Size(GF_Box *s);\r
-GF_Err tsel_dump(GF_Box *a, FILE * trace);\r
-\r
-\r
-GF_Box *dimC_New();\r
-void dimC_del(GF_Box *s);\r
-GF_Err dimC_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dimC_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dimC_Size(GF_Box *s);\r
-GF_Err dimC_dump(GF_Box *a, FILE * trace);\r
-\r
-GF_Box *dims_New();\r
-void dims_del(GF_Box *s);\r
-GF_Err dims_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dims_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dims_Size(GF_Box *s);\r
-GF_Err dims_dump(GF_Box *a, FILE * trace);\r
-\r
-GF_Box *diST_New();\r
-void diST_del(GF_Box *s);\r
-GF_Err diST_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err diST_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err diST_Size(GF_Box *s);\r
-GF_Err diST_dump(GF_Box *a, FILE * trace);\r
-\r
-\r
-GF_Box *ac3_New();\r
-void ac3_del(GF_Box *s);\r
-GF_Err ac3_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ac3_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err ac3_Size(GF_Box *s);\r
-GF_Err ac3_dump(GF_Box *a, FILE * trace);\r
-\r
-GF_Box *dac3_New();\r
-void dac3_del(GF_Box *s);\r
-GF_Err dac3_Read(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dac3_Write(GF_Box *s, GF_BitStream *bs);\r
-GF_Err dac3_Size(GF_Box *s);\r
-GF_Err dac3_dump(GF_Box *a, FILE * trace);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif //_GF_ISOMEDIA_DEV_H_\r
-\r