📄 isomedia_dev.h
字号:
/* * GPAC - Multimedia Framework C SDK * * Copyright (c) Jean Le Feuvre 2000-2005 * All rights reserved * * This file is part of GPAC / ISO Media File Format sub-project * * GPAC is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * GPAC is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * */#ifndef _GF_ISOMEDIA_DEV_H_#define _GF_ISOMEDIA_DEV_H_#ifdef __cplusplusextern "C" {#endif#include <gpac/isomedia.h>//the default size is 64, cause we need to handle large boxes...#define GF_ISOM_BOX \ u32 type; \ u64 size; \#define GF_ISOM_FULL_BOX \ GF_ISOM_BOX \ u8 version; \ u32 flags; \#define GF_ISOM_UUID_BOX \ GF_ISOM_BOX \ u8 uuid[16]; \typedef struct{ GF_ISOM_BOX} GF_Box;typedef struct{ GF_ISOM_FULL_BOX} GF_FullBox;typedef struct{ GF_ISOM_UUID_BOX} GF_UUIDBox;/*constructor*/GF_Box *gf_isom_box_new(u32 boxType);GF_Err gf_isom_box_write(GF_Box *ptr, GF_BitStream *bs);GF_Err gf_isom_box_read(GF_Box *ptr, GF_BitStream *bs);void gf_isom_box_del(GF_Box *ptr);GF_Err gf_isom_box_size(GF_Box *ptr);GF_Err gf_isom_parse_box(GF_Box **outBox, GF_BitStream *bs);GF_Err gf_isom_read_box_list(GF_Box *s, GF_BitStream *bs, GF_Err (*add_box)(GF_Box *par, GF_Box *b));GF_Err gf_isom_box_get_size(GF_Box *ptr);GF_Err gf_isom_full_box_get_size(GF_Box *ptr);GF_Err gf_isom_box_write_header(GF_Box *ptr, GF_BitStream *bs);GF_Err gf_isom_full_box_read(GF_Box *ptr, GF_BitStream *bs);GF_Err gf_isom_full_box_write(GF_Box *s, GF_BitStream *bs);void gf_isom_full_box_init(GF_Box *ptr);void gf_isom_box_array_del(GF_List *boxList);GF_Err gf_isom_box_array_write(GF_Box *parent, GF_List *list, GF_BitStream *bs);GF_Err gf_isom_box_array_size(GF_Box *parent, GF_List *list);enum{ GF_ISOM_BOX_TYPE_CO64 = GF_4CC( 'c', 'o', '6', '4' ), GF_ISOM_BOX_TYPE_STCO = GF_4CC( 's', 't', 'c', 'o' ), GF_ISOM_BOX_TYPE_CRHD = GF_4CC( 'c', 'r', 'h', 'd' ), GF_ISOM_BOX_TYPE_CTTS = GF_4CC( 'c', 't', 't', 's' ), GF_ISOM_BOX_TYPE_CPRT = GF_4CC( 'c', 'p', 'r', 't' ), GF_ISOM_BOX_TYPE_CHPL = GF_4CC( 'c', 'h', 'p', 'l' ), GF_ISOM_BOX_TYPE_URL = GF_4CC( 'u', 'r', 'l', ' ' ), GF_ISOM_BOX_TYPE_URN = GF_4CC( 'u', 'r', 'n', ' ' ), GF_ISOM_BOX_TYPE_DINF = GF_4CC( 'd', 'i', 'n', 'f' ), GF_ISOM_BOX_TYPE_DREF = GF_4CC( 'd', 'r', 'e', 'f' ), GF_ISOM_BOX_TYPE_STDP = GF_4CC( 's', 't', 'd', 'p' ), GF_ISOM_BOX_TYPE_EDTS = GF_4CC( 'e', 'd', 't', 's' ), GF_ISOM_BOX_TYPE_ELST = GF_4CC( 'e', 'l', 's', 't' ), GF_ISOM_BOX_TYPE_UUID = GF_4CC( 'u', 'u', 'i', 'd' ), GF_ISOM_BOX_TYPE_FREE = GF_4CC( 'f', 'r', 'e', 'e' ), GF_ISOM_BOX_TYPE_HDLR = GF_4CC( 'h', 'd', 'l', 'r' ), GF_ISOM_BOX_TYPE_HMHD = GF_4CC( 'h', 'm', 'h', 'd' ), GF_ISOM_BOX_TYPE_HINT = GF_4CC( 'h', 'i', 'n', 't' ), GF_ISOM_BOX_TYPE_MDIA = GF_4CC( 'm', 'd', 'i', 'a' ), GF_ISOM_BOX_TYPE_MDAT = GF_4CC( 'm', 'd', 'a', 't' ), GF_ISOM_BOX_TYPE_MDHD = GF_4CC( 'm', 'd', 'h', 'd' ), GF_ISOM_BOX_TYPE_MINF = GF_4CC( 'm', 'i', 'n', 'f' ), GF_ISOM_BOX_TYPE_MOOV = GF_4CC( 'm', 'o', 'o', 'v' ), GF_ISOM_BOX_TYPE_MVHD = GF_4CC( 'm', 'v', 'h', 'd' ), GF_ISOM_BOX_TYPE_STSD = GF_4CC( 's', 't', 's', 'd' ), GF_ISOM_BOX_TYPE_STSZ = GF_4CC( 's', 't', 's', 'z' ), GF_ISOM_BOX_TYPE_STZ2 = GF_4CC( 's', 't', 'z', '2' ), GF_ISOM_BOX_TYPE_STBL = GF_4CC( 's', 't', 'b', 'l' ), GF_ISOM_BOX_TYPE_STSC = GF_4CC( 's', 't', 's', 'c' ), GF_ISOM_BOX_TYPE_STSH = GF_4CC( 's', 't', 's', 'h' ), GF_ISOM_BOX_TYPE_SKIP = GF_4CC( 's', 'k', 'i', 'p' ), GF_ISOM_BOX_TYPE_SMHD = GF_4CC( 's', 'm', 'h', 'd' ), GF_ISOM_BOX_TYPE_STSS = GF_4CC( 's', 't', 's', 's' ), GF_ISOM_BOX_TYPE_STTS = GF_4CC( 's', 't', 't', 's' ), GF_ISOM_BOX_TYPE_TRAK = GF_4CC( 't', 'r', 'a', 'k' ), GF_ISOM_BOX_TYPE_TKHD = GF_4CC( 't', 'k', 'h', 'd' ), GF_ISOM_BOX_TYPE_TREF = GF_4CC( 't', 'r', 'e', 'f' ), GF_ISOM_BOX_TYPE_UDTA = GF_4CC( 'u', 'd', 't', 'a' ), GF_ISOM_BOX_TYPE_VMHD = GF_4CC( 'v', 'm', 'h', 'd' ), GF_ISOM_BOX_TYPE_FTYP = GF_4CC( 'f', 't', 'y', 'p' ), GF_ISOM_BOX_TYPE_FADB = GF_4CC( 'p', 'a', 'd', 'b' ), GF_ISOM_BOX_TYPE_PDIN = GF_4CC( 'p', 'd', 'i', 'n' ), GF_ISOM_BOX_TYPE_SDTP = GF_4CC( 's', 'd', 't', 'p' ),#ifndef GF_ISOM_NO_FRAGMENTS /*Movie Fragments*/ GF_ISOM_BOX_TYPE_MVEX = GF_4CC( 'm', 'v', 'e', 'x' ), GF_ISOM_BOX_TYPE_MEHD = GF_4CC( 'm', 'e', 'h', 'd' ), GF_ISOM_BOX_TYPE_TREX = GF_4CC( 't', 'r', 'e', 'x' ), GF_ISOM_BOX_TYPE_MOOF = GF_4CC( 'm', 'o', 'o', 'f' ), GF_ISOM_BOX_TYPE_MFHD = GF_4CC( 'm', 'f', 'h', 'd' ), GF_ISOM_BOX_TYPE_TRAF = GF_4CC( 't', 'r', 'a', 'f' ), GF_ISOM_BOX_TYPE_TFHD = GF_4CC( 't', 'f', 'h', 'd' ), GF_ISOM_BOX_TYPE_TRUN = GF_4CC( 't', 'r', 'u', 'n' ),#endif /*MP4 extensions*/ GF_ISOM_BOX_TYPE_DPND = GF_4CC( 'd', 'p', 'n', 'd' ), GF_ISOM_BOX_TYPE_IODS = GF_4CC( 'i', 'o', 'd', 's' ), GF_ISOM_BOX_TYPE_ESDS = GF_4CC( 'e', 's', 'd', 's' ), GF_ISOM_BOX_TYPE_MPOD = GF_4CC( 'm', 'p', 'o', 'd' ), GF_ISOM_BOX_TYPE_SYNC = GF_4CC( 's', 'y', 'n', 'c' ), GF_ISOM_BOX_TYPE_IPIR = GF_4CC( 'i', 'p', 'i', 'r' ), GF_ISOM_BOX_TYPE_SDHD = GF_4CC( 's', 'd', 'h', 'd' ), GF_ISOM_BOX_TYPE_ODHD = GF_4CC( 'o', 'd', 'h', 'd' ), GF_ISOM_BOX_TYPE_NMHD = GF_4CC( 'n', 'm', 'h', 'd' ), GF_ISOM_BOX_TYPE_MP4S = GF_4CC( 'm', 'p', '4', 's' ), GF_ISOM_BOX_TYPE_MP4A = GF_4CC( 'm', 'p', '4', 'a' ), GF_ISOM_BOX_TYPE_MP4V = GF_4CC( 'm', 'p', '4', 'v' ), /*AVC / H264 extension*/ GF_ISOM_BOX_TYPE_AVCC = GF_4CC( 'a', 'v', 'c', 'C' ), GF_ISOM_BOX_TYPE_BTRT = GF_4CC( 'b', 't', 'r', 't' ), GF_ISOM_BOX_TYPE_M4DS = GF_4CC( 'm', '4', 'd', 's' ), GF_ISOM_BOX_TYPE_AVC1 = GF_4CC( 'a', 'v', 'c', '1' ), /*3GPP extensions*/ GF_ISOM_BOX_TYPE_DAMR = GF_4CC( 'd', 'a', 'm', 'r' ), GF_ISOM_BOX_TYPE_D263 = GF_4CC( 'd', '2', '6', '3' ), GF_ISOM_BOX_TYPE_DEVC = GF_4CC( 'd', 'e', 'v', 'c' ), GF_ISOM_BOX_TYPE_DQCP = GF_4CC( 'd', 'q', 'c', 'p' ), GF_ISOM_BOX_TYPE_DSMV = GF_4CC( 'd', 's', 'm', 'v' ), /*3GPP text / MPEG-4 StreamingText*/ GF_ISOM_BOX_TYPE_FTAB = GF_4CC( 'f', 't', 'a', 'b' ), GF_ISOM_BOX_TYPE_TX3G = GF_4CC( 't', 'x', '3', 'g' ), GF_ISOM_BOX_TYPE_STYL = GF_4CC( 's', 't', 'y', 'l' ), GF_ISOM_BOX_TYPE_HLIT = GF_4CC( 'h', 'l', 'i', 't' ), GF_ISOM_BOX_TYPE_HCLR = GF_4CC( 'h', 'c', 'l', 'r' ), GF_ISOM_BOX_TYPE_KROK = GF_4CC( 'k', 'r', 'o', 'k' ), GF_ISOM_BOX_TYPE_DLAY = GF_4CC( 'd', 'l', 'a', 'y' ), GF_ISOM_BOX_TYPE_HREF = GF_4CC( 'h', 'r', 'e', 'f' ), GF_ISOM_BOX_TYPE_TBOX = GF_4CC( 't', 'b', 'o', 'x' ), GF_ISOM_BOX_TYPE_BLNK = GF_4CC( 'b', 'l', 'n', 'k' ), GF_ISOM_BOX_TYPE_TWRP = GF_4CC( 't', 'w', 'r', 'p' ), /* ISO Base Media File Format Extensions for MPEG-21 */ GF_ISOM_BOX_TYPE_META = GF_4CC( 'm', 'e', 't', 'a' ), GF_ISOM_BOX_TYPE_XML = GF_4CC( 'x', 'm', 'l', ' ' ), GF_ISOM_BOX_TYPE_BXML = GF_4CC( 'b', 'x', 'm', 'l' ), GF_ISOM_BOX_TYPE_ILOC = GF_4CC( 'i', 'l', 'o', 'c' ), GF_ISOM_BOX_TYPE_PITM = GF_4CC( 'p', 'i', 't', 'm' ), GF_ISOM_BOX_TYPE_IPRO = GF_4CC( 'i', 'p', 'r', 'o' ), GF_ISOM_BOX_TYPE_INFE = GF_4CC( 'i', 'n', 'f', 'e' ), GF_ISOM_BOX_TYPE_IINF = GF_4CC( 'i', 'i', 'n', 'f' ), GF_ISOM_BOX_TYPE_IMIF = GF_4CC( 'i', 'm', 'i', 'f' ), GF_ISOM_BOX_TYPE_IPMC = GF_4CC( 'i', 'p', 'm', 'c' ), GF_ISOM_BOX_TYPE_ENCA = GF_4CC( 'e', 'n', 'c', 'a' ), GF_ISOM_BOX_TYPE_ENCV = GF_4CC( 'e', 'n', 'c', 'v' ), GF_ISOM_BOX_TYPE_ENCT = GF_4CC( 'e', 'n', 'c', 't' ), GF_ISOM_BOX_TYPE_ENCS = GF_4CC( 'e', 'n', 'c', 's' ), GF_ISOM_BOX_TYPE_SINF = GF_4CC( 's', 'i', 'n', 'f' ), GF_ISOM_BOX_TYPE_FRMA = GF_4CC( 'f', 'r', 'm', 'a' ), GF_ISOM_BOX_TYPE_SCHM = GF_4CC( 's', 'c', 'h', 'm' ), GF_ISOM_BOX_TYPE_SCHI = GF_4CC( 's', 'c', 'h', 'i' ), /* ISMA 1.0 Encryption and Authentication V 1.0 */ GF_ISOM_BOX_TYPE_IKMS = GF_4CC( 'i', 'K', 'M', 'S' ), GF_ISOM_BOX_TYPE_ISFM = GF_4CC( 'i', 'S', 'F', 'M' ), /* Hinting boxes */ GF_ISOM_BOX_TYPE_RTP_STSD = GF_4CC( 'r', 't', 'p', ' ' ), GF_ISOM_BOX_TYPE_HNTI = GF_4CC( 'h', 'n', 't', 'i' ), GF_ISOM_BOX_TYPE_RTP = GF_4CC( 'r', 't', 'p', ' ' ), GF_ISOM_BOX_TYPE_SDP = GF_4CC( 's', 'd', 'p', ' ' ), GF_ISOM_BOX_TYPE_HINF = GF_4CC( 'h', 'i', 'n', 'f' ), GF_ISOM_BOX_TYPE_NAME = GF_4CC( 'n', 'a', 'm', 'e' ), GF_ISOM_BOX_TYPE_TRPY = GF_4CC( 't', 'r', 'p', 'y' ), GF_ISOM_BOX_TYPE_NUMP = GF_4CC( 'n', 'u', 'm', 'p' ), GF_ISOM_BOX_TYPE_TOTL = GF_4CC( 't', 'o', 't', 'l' ), GF_ISOM_BOX_TYPE_NPCK = GF_4CC( 'n', 'p', 'c', 'k' ), GF_ISOM_BOX_TYPE_TPYL = GF_4CC( 't', 'p', 'y', 'l' ), GF_ISOM_BOX_TYPE_TPAY = GF_4CC( 't', 'p', 'a', 'y' ), GF_ISOM_BOX_TYPE_MAXR = GF_4CC( 'm', 'a', 'x', 'r' ), GF_ISOM_BOX_TYPE_DMED = GF_4CC( 'd', 'm', 'e', 'd' ), GF_ISOM_BOX_TYPE_DIMM = GF_4CC( 'd', 'i', 'm', 'm' ), GF_ISOM_BOX_TYPE_DREP = GF_4CC( 'd', 'r', 'e', 'p' ), GF_ISOM_BOX_TYPE_TMIN = GF_4CC( 't', 'm', 'i', 'n' ), GF_ISOM_BOX_TYPE_TMAX = GF_4CC( 't', 'm', 'a', 'x' ), GF_ISOM_BOX_TYPE_PMAX = GF_4CC( 'p', 'm', 'a', 'x' ), GF_ISOM_BOX_TYPE_DMAX = GF_4CC( 'd', 'm', 'a', 'x' ), GF_ISOM_BOX_TYPE_PAYT = GF_4CC( 'p', 'a', 'y', 't' ), GF_ISOM_BOX_TYPE_RELY = GF_4CC( 'r', 'e', 'l', 'y' ), GF_ISOM_BOX_TYPE_TIMS = GF_4CC( 't', 'i', 'm', 's' ), GF_ISOM_BOX_TYPE_TSRO = GF_4CC( 't', 's', 'r', 'o' ), GF_ISOM_BOX_TYPE_SNRO = GF_4CC( 's', 'n', 'r', 'o' ), GF_ISOM_BOX_TYPE_RTPO = GF_4CC( 'r', 't', 'p', 'o' ), /* Apple extensions */ GF_ISOM_BOX_TYPE_ILST = GF_4CC( 'i', 'l', 's', 't' ), GF_ISOM_BOX_TYPE_0xA9NAM = GF_4CC( 0xA9, 'n', 'a', 'm' ), GF_ISOM_BOX_TYPE_0xA9CMT = GF_4CC( 0xA9, 'c', 'm', 't' ), GF_ISOM_BOX_TYPE_0xA9DAY = GF_4CC( 0xA9, 'd', 'a', 'y' ), GF_ISOM_BOX_TYPE_0xA9ART = GF_4CC( 0xA9, 'A', 'R', 'T' ), GF_ISOM_BOX_TYPE_0xA9TRK = GF_4CC( 0xA9, 't', 'r', 'k' ), GF_ISOM_BOX_TYPE_0xA9ALB = GF_4CC( 0xA9, 'a', 'l', 'b' ), GF_ISOM_BOX_TYPE_0xA9COM = GF_4CC( 0xA9, 'c', 'o', 'm' ), GF_ISOM_BOX_TYPE_0xA9WRT = GF_4CC( 0xA9, 'w', 'r', 't' ), GF_ISOM_BOX_TYPE_0xA9TOO = GF_4CC( 0xA9, 't', 'o', 'o' ), GF_ISOM_BOX_TYPE_0xA9CPY = GF_4CC( 0xA9, 'c', 'p', 'y' ), GF_ISOM_BOX_TYPE_0xA9DES = GF_4CC( 0xA9, 'd', 'e', 's' ), GF_ISOM_BOX_TYPE_0xA9GEN = GF_4CC( 0xA9, 'g', 'e', 'n' ), GF_ISOM_BOX_TYPE_0xA9GRP = GF_4CC( 0xA9, 'g', 'r', 'p' ), GF_ISOM_BOX_TYPE_0xA9ENC = GF_4CC( 0xA9, 'e', 'n', 'c' ), GF_ISOM_BOX_TYPE_aART = GF_4CC( 'a', 'A', 'R', 'T' ), GF_ISOM_BOX_TYPE_PGAP = GF_4CC( 'p', 'g', 'a', 'p' ), GF_ISOM_BOX_TYPE_GNRE = GF_4CC( 'g', 'n', 'r', 'e' ), GF_ISOM_BOX_TYPE_DISK = GF_4CC( 'd', 'i', 's', 'k' ), GF_ISOM_BOX_TYPE_TRKN = GF_4CC( 't', 'r', 'k', 'n' ), GF_ISOM_BOX_TYPE_TMPO = GF_4CC( 't', 'm', 'p', 'o' ), GF_ISOM_BOX_TYPE_CPIL = GF_4CC( 'c', 'p', 'i', 'l' ), GF_ISOM_BOX_TYPE_COVR = GF_4CC( 'c', 'o', 'v', 'r' ), GF_ISOM_BOX_TYPE_iTunesSpecificInfo = GF_4CC( '-', '-', '-', '-' ), GF_ISOM_BOX_TYPE_DATA = GF_4CC( 'd', 'a', 't', 'a' ), GF_ISOM_HANDLER_TYPE_MDIR = GF_4CC( 'm', 'd', 'i', 'r' ), GF_ISOM_BOX_TYPE_CHAP = GF_4CC( 'c', 'h', 'a', 'p' ), /*OMA (P)DCF boxes*/ GF_ISOM_BOX_TYPE_OHDR = GF_4CC( 'o', 'h', 'd', 'r' ), GF_ISOM_BOX_TYPE_GRPI = GF_4CC( 'g', 'r', 'p', 'i' ), GF_ISOM_BOX_TYPE_MDRI = GF_4CC( 'm', 'd', 'r', 'i' ), GF_ISOM_BOX_TYPE_ODTT = GF_4CC( 'o', 'd', 't', 't' ), GF_ISOM_BOX_TYPE_ODRB = GF_4CC( 'o', 'd', 'r', 'b' ), GF_ISOM_BOX_TYPE_ODKM = GF_4CC( 'o', 'd', 'k', 'm' ), GF_ISOM_BOX_TYPE_ODAF = GF_4CC( 'o', 'd', 'a', 'f' ), /*ALL INTERNAL BOXES - NEVER WRITTEN TO FILE!!*/ /*generic handlers*/ GF_ISOM_BOX_TYPE_GNRM = GF_4CC( 'g', 'n', 'r', 'm' ), GF_ISOM_BOX_TYPE_GNRV = GF_4CC( 'g', 'n', 'r', 'v' ), GF_ISOM_BOX_TYPE_GNRA = GF_4CC( 'g', 'n', 'r', 'a' ), /*storage of AU fragments (for MPEG-4 visual resync marker (video packets), located in stbl.*/ GF_ISOM_BOX_TYPE_STSF = GF_4CC( 'S', 'T', 'S', 'F' ), /*base constructor of all hint formats (currently only RTP uses it)*/ GF_ISOM_BOX_TYPE_GHNT = GF_4CC( 'g', 'h', 'n', 't' ), /*for compatibility with old files hinted for DSS - needs special parsing*/ GF_ISOM_BOX_TYPE_VOID = GF_4CC( 'V', 'O', 'I', 'D' ),};typedef struct{ GF_ISOM_BOX /*note: the data is NEVER loaded to the mdat in this lib*/ u64 dataSize; char *data;} GF_MediaDataBox;typedef struct{ GF_ISOM_BOX char *data; u32 dataSize;} GF_UnknownBox;typedef struct{ GF_ISOM_UUID_BOX char *data; u32 dataSize;} GF_UnknownUUIDBox;typedef struct{ GF_ISOM_FULL_BOX u64 creationTime; u64 modificationTime; u32 timeScale; u64 duration; u32 nextTrackID; u32 preferredRate; u16 preferredVolume; char reserved[10]; u32 matrixA; u32 matrixB; u32 matrixU; u32 matrixC; u32 matrixD; u32 matrixV; u32 matrixW; u32 matrixX; u32 matrixY; u32 previewTime; u32 previewDuration; u32 posterTime; u32 selectionTime; u32 selectionDuration; u32 currentTime;} GF_MovieHeaderBox;typedef struct{ GF_ISOM_FULL_BOX GF_Descriptor *descriptor;} GF_ObjectDescriptorBox;/*used for entry list*/typedef struct{ u64 segmentDuration; s64 mediaTime; u32 mediaRate;} GF_EdtsEntry;typedef struct{ GF_ISOM_FULL_BOX GF_List *entryList;} GF_EditListBox;typedef struct{ GF_ISOM_BOX GF_EditListBox *editList;} GF_EditBox;/*used to classify boxes in the UserData GF_Box*/typedef struct{ u32 boxType; u8 uuid[16]; GF_List *boxList;} GF_UserDataMap;typedef struct{ GF_ISOM_BOX GF_List *recordList;} GF_UserDataBox;typedef struct{ GF_ISOM_BOX GF_MovieHeaderBox *mvhd; GF_ObjectDescriptorBox *iods; GF_UserDataBox *udta;#ifndef GF_ISOM_NO_FRAGMENTS struct __tag_mvex_box *mvex;#endif /*meta box if any*/ struct __tag_meta_box *meta; /*track boxes*/ GF_List *trackList; /*other boxes*/ GF_List *boxes; GF_ISOFile *mov;} GF_MovieBox;typedef struct{ GF_ISOM_FULL_BOX u64 creationTime; u64 modificationTime; u32 trackID; u32 reserved1; u64 duration; u32 reserved2[2]; u16 layer; u16 alternate_group; u16 volume; u16 reserved3; u32 matrix[9]; u32 width, height;} GF_TrackHeaderBox;typedef struct{ GF_ISOM_BOX GF_List *boxList;} GF_TrackReferenceBox;typedef struct{ GF_ISOM_BOX GF_UserDataBox *udta; GF_TrackHeaderBox *Header; struct __tag_media_box *Media; GF_EditBox *editBox; GF_TrackReferenceBox *References; /*meta box if any*/ struct __tag_meta_box *meta; /*other*/ GF_List *boxes; GF_MovieBox *moov; /*private for media padding*/ u32 padding_bytes; /*private for editing*/ char *name; /*private for editing*/ Bool is_unpacked;} GF_TrackBox;typedef struct{ GF_ISOM_FULL_BOX u64 creationTime; u64 modificationTime; u32 timeScale; u64 duration; char packedLanguage[4]; u16 reserved;} GF_MediaHeaderBox;typedef struct{ GF_ISOM_FULL_BOX u32 reserved1; u32 handlerType; u8 reserved2[12]; char *nameUTF8;} GF_HandlerBox;typedef struct __tag_media_box{ GF_ISOM_BOX GF_TrackBox *mediaTrack; GF_MediaHeaderBox *mediaHeader; GF_HandlerBox *handler; struct __tag_media_info_box *information; u64 BytesMissing;} GF_MediaBox;typedef struct{ GF_ISOM_FULL_BOX u64 reserved;} GF_VideoMediaHeaderBox;typedef struct{ GF_ISOM_FULL_BOX u32 reserved;} GF_SoundMediaHeaderBox;typedef struct{ GF_ISOM_FULL_BOX /*this is used for us INTERNALLY*/ u32 subType; u32 maxPDUSize; u32 avgPDUSize; u32 maxBitrate;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -