📄 isomedia_dev.h
字号:
u32 avgBitrate; 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; \ 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_ONLYvoid gf_isom_video_sample_entry_write(GF_VisualSampleEntryBox *ent, GF_BitStream *bs);void gf_isom_video_sample_entry_size(GF_VisualSampleEntryBox *ent);#endiftypedef 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_ESDBox *esd; /*used for Publishing*/ GF_SLConfig *slc; /*avc extensions - we merged with regular 'mp4v' box to handle isma E&A signaling of AVC*/ GF_AVCConfigurationBox *avc_config; GF_MPEG4BitRateBox *bitrate; /*ext descriptors*/ GF_MPEG4ExtensionDescriptorsBox *descr; /*internally emulated esd*/ GF_ESD *emul_esd; /*iPod's hack*/ GF_UnknownUUIDBox *ipod_ext;} 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;#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_ONLYvoid gf_isom_audio_sample_entry_write(GF_AudioSampleEntryBox *ptr, GF_BitStream *bs);void gf_isom_audio_sample_entry_size(GF_AudioSampleEntryBox *ptr);#endiftypedef 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; u32 altCount; u32 *altBrand;} GF_FileTypeBox;typedef struct{ GF_ISOM_FULL_BOX u32 *rates; u32 *times; u32 count;} GF_ProgressiveDownloadBox;/* 3GPP streaming text boxes*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -