isomedia_dev.h
来自「gaca源码」· C头文件 代码 · 共 2,422 行 · 第 1/5 页
H
2,422 行
u32 slidingAverageBitrate;
} GF_HintMediaHeaderBox;
typedef struct
{
GF_ISOM_FULL_BOX
} GF_MPEGMediaHeaderBox;
typedef struct
{
GF_ISOM_FULL_BOX
} GF_ODMediaHeaderBox;
typedef struct
{
GF_ISOM_FULL_BOX
} GF_OCRMediaHeaderBox;
typedef struct
{
GF_ISOM_FULL_BOX
} GF_SceneMediaHeaderBox;
typedef struct
{
GF_ISOM_FULL_BOX
GF_List *boxList;
} GF_DataReferenceBox;
typedef struct
{
GF_ISOM_BOX
GF_DataReferenceBox *dref;
} GF_DataInformationBox;
#define GF_ISOM_DATAENTRY_FIELDS \
char *location;
typedef struct
{
GF_ISOM_FULL_BOX
GF_ISOM_DATAENTRY_FIELDS
} GF_DataEntryBox;
typedef struct
{
GF_ISOM_FULL_BOX
GF_ISOM_DATAENTRY_FIELDS
} GF_DataEntryURLBox;
typedef struct
{
GF_ISOM_FULL_BOX
GF_ISOM_DATAENTRY_FIELDS
char *nameURN;
} GF_DataEntryURNBox;
typedef struct
{
u32 sampleCount;
u32 sampleDelta;
} GF_SttsEntry;
typedef struct
{
GF_ISOM_FULL_BOX
GF_List *entryList;
#ifndef GPAC_READ_ONLY
/*cache for WRITE*/
GF_SttsEntry *w_currentEntry;
u32 w_currentSampleNum;
u64 w_LastDTS;
#endif
/*cache for READ*/
u32 r_FirstSampleInEntry;
u32 r_currentEntryIndex;
u64 r_CurrentDTS;
} GF_TimeToSampleBox;
typedef struct
{
u32 sampleCount;
u32 decodingOffset;
} GF_DttsEntry;
typedef struct
{
GF_ISOM_FULL_BOX
GF_List *entryList;
#ifndef GPAC_READ_ONLY
/*Cache for write*/
GF_DttsEntry *w_currentEntry;
u32 w_LastSampleNumber;
/*force one sample per entry*/
Bool unpack_mode;
#endif
/*Cache for read*/
u32 r_currentEntryIndex;
u32 r_FirstSampleInEntry;
} GF_CompositionOffsetBox;
typedef struct
{
u32 SampleNumber;
u32 fragmentCount;
u16 *fragmentSizes;
} GF_StsfEntry;
typedef struct
{
GF_ISOM_FULL_BOX
GF_List *entryList;
#ifndef GPAC_READ_ONLY
/*Cache for write*/
GF_StsfEntry *w_currentEntry;
u32 w_currentEntryIndex;
#endif
/*Cache for read*/
u32 r_currentEntryIndex;
GF_StsfEntry *r_currentEntry;
} GF_SampleFragmentBox;
#define GF_ISOM_SAMPLE_ENTRY_FIELDS \
GF_ISOM_UUID_BOX \
u16 dataReferenceIndex; \
char reserved[ 6 ]; \
struct __tag_protect_box *protection_info;
/*base sample entry box (never used but for typecasting)*/
typedef struct
{
GF_ISOM_SAMPLE_ENTRY_FIELDS
} GF_SampleEntryBox;
typedef struct
{
GF_ISOM_SAMPLE_ENTRY_FIELDS
/*box type as specified in the file (not this box's type!!)*/
u32 EntryType;
char *data;
u32 data_size;
} GF_GenericSampleEntryBox;
typedef struct
{
GF_ISOM_FULL_BOX
GF_ESD *desc;
} GF_ESDBox;
/*for all MPEG4 media except audio and video*/
typedef struct
{
GF_ISOM_SAMPLE_ENTRY_FIELDS
GF_ESDBox *esd;
/*used for hinting when extracting the OD stream...*/
GF_SLConfig *slc;
} GF_MPEGSampleEntryBox;
#define GF_ISOM_VISUAL_SAMPLE_ENTRY \
GF_ISOM_SAMPLE_ENTRY_FIELDS \
u16 version; \
u16 revision; \
u32 vendor; \
u32 temporal_quality; \
u32 spacial_quality; \
u16 Width, Height; \
u32 horiz_res, vert_res; \
u32 entry_data_size; \
u16 frames_per_sample; \
unsigned char compressor_name[33]; \
u16 bit_depth; \
s16 color_table_index;
typedef struct
{
GF_ISOM_VISUAL_SAMPLE_ENTRY
} GF_VisualSampleEntryBox;
void gf_isom_video_sample_entry_init(GF_VisualSampleEntryBox *ent);
GF_Err gf_isom_video_sample_entry_read(GF_VisualSampleEntryBox *ptr, GF_BitStream *bs);
#ifndef GPAC_READ_ONLY
void gf_isom_video_sample_entry_write(GF_VisualSampleEntryBox *ent, GF_BitStream *bs);
void gf_isom_video_sample_entry_size(GF_VisualSampleEntryBox *ent);
#endif
typedef struct
{
GF_ISOM_VISUAL_SAMPLE_ENTRY
GF_ESDBox *esd;
GF_SLConfig *slc;
} GF_MPEGVisualSampleEntryBox;
/*this is the default visual sdst (to handle unknown media)*/
typedef struct
{
GF_ISOM_VISUAL_SAMPLE_ENTRY
/*box type as specified in the file (not this box's type!!)*/
u32 EntryType;
/*opaque description data (ESDS in MP4, SMI in SVQ3, ...)*/
char *data;
u32 data_size;
} GF_GenericVisualSampleEntryBox;
typedef struct
{
GF_ISOM_BOX
u32 bufferSizeDB;
u32 maxBitrate;
u32 avgBitrate;
} GF_MPEG4BitRateBox;
typedef struct
{
GF_ISOM_BOX
GF_List *descriptors;
} GF_MPEG4ExtensionDescriptorsBox;
typedef struct
{
GF_ISOM_BOX
GF_AVCConfig *config;
} GF_AVCConfigurationBox;
typedef struct
{
GF_ISOM_VISUAL_SAMPLE_ENTRY
GF_AVCConfigurationBox *avc_config;
GF_MPEG4BitRateBox *bitrate;
/*ext descriptors*/
GF_MPEG4ExtensionDescriptorsBox *descr;
/*used for Publishing*/
GF_SLConfig *slc;
/*internally emulated esd*/
GF_ESD *esd;
} GF_AVCSampleEntryBox;
#define GF_ISOM_AUDIO_SAMPLE_ENTRY \
GF_ISOM_SAMPLE_ENTRY_FIELDS \
u16 version; \
u16 revision; \
u32 vendor; \
u16 channel_count; \
u16 bitspersample; \
u16 compression_id; \
u16 packet_size; \
u16 samplerate_hi; \
u16 samplerate_lo;
typedef struct
{
GF_ISOM_AUDIO_SAMPLE_ENTRY
} GF_AudioSampleEntryBox;
void gf_isom_audio_sample_entry_init(GF_AudioSampleEntryBox *ptr);
GF_Err gf_isom_audio_sample_entry_read(GF_AudioSampleEntryBox *ptr, GF_BitStream *bs);
#ifndef GPAC_READ_ONLY
void gf_isom_audio_sample_entry_write(GF_AudioSampleEntryBox *ptr, GF_BitStream *bs);
void gf_isom_audio_sample_entry_size(GF_AudioSampleEntryBox *ptr);
#endif
typedef struct
{
GF_ISOM_AUDIO_SAMPLE_ENTRY
GF_ESDBox *esd;
GF_SLConfig *slc;
} GF_MPEGAudioSampleEntryBox;
typedef struct
{
GF_ISOM_BOX
GF_3GPConfig cfg;
} GF_3GPPConfigBox;
typedef struct
{
GF_ISOM_AUDIO_SAMPLE_ENTRY
GF_3GPPConfigBox *info;
} GF_3GPPAudioSampleEntryBox;
typedef struct
{
GF_ISOM_VISUAL_SAMPLE_ENTRY
GF_3GPPConfigBox *info;
} GF_3GPPVisualSampleEntryBox;
/*this is the default visual sdst (to handle unknown media)*/
typedef struct
{
GF_ISOM_AUDIO_SAMPLE_ENTRY
/*box type as specified in the file (not this box's type!!)*/
u32 EntryType;
/*opaque description data (ESDS in MP4, ...)*/
char *data;
u32 data_size;
} GF_GenericAudioSampleEntryBox;
typedef struct
{
GF_ISOM_FULL_BOX
GF_List *boxList;
} GF_SampleDescriptionBox;
typedef struct
{
GF_ISOM_FULL_BOX
/*if this is the compact version, sample size is actually fieldSize*/
u32 sampleSize;
u32 sampleCount;
u32 alloc_size;
u32 *sizes;
} GF_SampleSizeBox;
typedef struct
{
GF_ISOM_FULL_BOX
u32 entryCount;
u32 alloc_size;
u32 *offsets;
} GF_ChunkOffsetBox;
typedef struct
{
GF_ISOM_FULL_BOX
u32 entryCount;
u32 alloc_size;
u64 *offsets;
} GF_ChunkLargeOffsetBox;
typedef struct
{
u32 firstChunk;
u32 nextChunk;
u32 samplesPerChunk;
u32 sampleDescriptionIndex;
u8 isEdited;
} GF_StscEntry;
typedef struct
{
GF_ISOM_FULL_BOX
GF_List *entryList;
GF_StscEntry *currentEntry;
/*0-based cache for READ. In WRITE mode, we always have 1 sample per chunk so no need for a cache*/
u32 currentIndex;
/*first sample number in this chunk*/
u32 firstSampleInCurrentChunk;
u32 currentChunk;
u32 ghostNumber;
} GF_SampleToChunkBox;
typedef struct
{
GF_ISOM_FULL_BOX
u32 entryCount;
u32 *sampleNumbers;
/*cache for READ mode (in write we realloc no matter what)*/
u32 r_LastSyncSample;
/*0-based index in the array*/
u32 r_LastSampleIndex;
} GF_SyncSampleBox;
typedef struct
{
u32 shadowedSampleNumber;
s32 syncSampleNumber;
} GF_StshEntry;
typedef struct
{
GF_ISOM_FULL_BOX
GF_List *entries;
/*Cache for read mode*/
u32 r_LastEntryIndex;
u32 r_LastFoundSample;
} GF_ShadowSyncBox;
typedef struct
{
GF_ISOM_FULL_BOX
u32 entryCount;
u16 *priorities;
} GF_DegradationPriorityBox;
typedef struct
{
GF_ISOM_FULL_BOX
u32 SampleCount;
u8 *padbits;
} GF_PaddingBitsBox;
typedef struct
{
GF_ISOM_FULL_BOX
u32 sampleCount;
/*each dep type is packed on 1 byte*/
u8 *sample_info;
} GF_SampleDependencyTypeBox;
typedef struct
{
GF_ISOM_BOX
GF_TimeToSampleBox *TimeToSample;
GF_CompositionOffsetBox *CompositionOffset;
GF_SyncSampleBox *SyncSample;
GF_SampleDescriptionBox *SampleDescription;
GF_SampleSizeBox *SampleSize;
GF_SampleToChunkBox *SampleToChunk;
/*untyped, to handle 32 bits and 64 bits chunkOffsets*/
GF_Box *ChunkOffset;
GF_ShadowSyncBox *ShadowSync;
GF_DegradationPriorityBox *DegradationPriority;
GF_PaddingBitsBox *PaddingBits;
GF_SampleDependencyTypeBox *SampleDep;
GF_SampleFragmentBox *Fragments;
u32 MaxSamplePerChunk;
u16 groupID;
u16 trackPriority;
u32 currentEntryIndex;
} GF_SampleTableBox;
typedef struct __tag_media_info_box
{
GF_ISOM_BOX
GF_DataInformationBox *dataInformation;
GF_SampleTableBox *sampleTable;
GF_Box *InfoHeader;
struct __tag_data_map *dataHandler;
u32 dataEntryIndex;
} GF_MediaInformationBox;
typedef struct
{
GF_ISOM_BOX
char *data;
u32 dataSize;
} GF_FreeSpaceBox;
typedef struct
{
GF_ISOM_FULL_BOX
char packedLanguageCode[4];
char *notice;
} GF_CopyrightBox;
typedef struct
{
char *name;
u64 start_time;
} GF_ChapterEntry;
typedef struct
{
GF_ISOM_FULL_BOX
GF_List *list;
} GF_ChapterListBox;
typedef struct
{
GF_ISOM_BOX
u32 trackIDCount;
u32 *trackIDs;
} GF_TrackReferenceTypeBox;
typedef struct
{
GF_ISOM_BOX
u32 majorBrand;
u32 minorVersion;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?