isomedia_dev.h
来自「gaca源码」· C头文件 代码 · 共 2,422 行 · 第 1/5 页
H
2,422 行
/*
* 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 __cplusplus
extern "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_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' ),
/*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;
u32 avgBitrate;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?