📄 box_dump.c
字号:
return GF_OK;}GF_Err mdhd_dump(GF_Box *a, FILE * trace){ GF_MediaHeaderBox *p; p = (GF_MediaHeaderBox *)a; fprintf(trace, "<MediaHeaderBox "); fprintf(trace, "CreationTime=\""LLD"\" ", LLD_CAST p->creationTime); fprintf(trace, "ModificationTime=\""LLD"\" ", LLD_CAST p->modificationTime); fprintf(trace, "TimeScale=\"%d\" ", p->timeScale); fprintf(trace, "Duration=\""LLD"\" ", LLD_CAST p->duration); fprintf(trace, "LanguageCode=\"%c%c%c\">\n", p->packedLanguage[0], p->packedLanguage[1], p->packedLanguage[2]); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</MediaHeaderBox>\n"); return GF_OK;}GF_Err vmhd_dump(GF_Box *a, FILE * trace){ fprintf(trace, "<VideoMediaHeaderBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</VideoMediaHeaderBox>\n"); return GF_OK;}GF_Err smhd_dump(GF_Box *a, FILE * trace){ fprintf(trace, "<SoundMediaHeaderBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</SoundMediaHeaderBox>\n"); return GF_OK;}GF_Err hmhd_dump(GF_Box *a, FILE * trace){ GF_HintMediaHeaderBox *p; p = (GF_HintMediaHeaderBox *)a; fprintf(trace, "<HintMediaHeaderBox "); fprintf(trace, "MaximumPDUSize=\"%d\" ", p->maxPDUSize); fprintf(trace, "AveragePDUSize=\"%d\" ", p->avgPDUSize); fprintf(trace, "MaxBitRate=\"%d\" ", p->maxBitrate); fprintf(trace, "AverageBitRate=\"%d\">\n", p->avgBitrate); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</HintMediaHeaderBox>\n"); return GF_OK;}GF_Err nmhd_dump(GF_Box *a, FILE * trace){ fprintf(trace, "<MPEGMediaHeaderBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</MPEGMediaHeaderBox>\n"); return GF_OK;}GF_Err stbl_dump(GF_Box *a, FILE * trace){ GF_SampleTableBox *p; p = (GF_SampleTableBox *)a; fprintf(trace, "<SampleTableBox>\n"); DumpBox(a, trace); gf_box_dump(p->SampleDescription, trace); gf_box_dump(p->TimeToSample, trace); if (p->CompositionOffset) gf_box_dump(p->CompositionOffset, trace); if (p->SyncSample) gf_box_dump(p->SyncSample, trace); if (p->ShadowSync) gf_box_dump(p->ShadowSync, trace); gf_box_dump(p->SampleToChunk, trace); gf_box_dump(p->SampleSize, trace); gf_box_dump(p->ChunkOffset, trace); if (p->DegradationPriority) gf_box_dump(p->DegradationPriority, trace); if (p->SampleDep) gf_box_dump(p->SampleDep, trace); if (p->PaddingBits) gf_box_dump(p->PaddingBits, trace); if (p->Fragments) gf_box_dump(p->Fragments, trace); fprintf(trace, "</SampleTableBox>\n"); return GF_OK;}GF_Err dinf_dump(GF_Box *a, FILE * trace){ GF_DataInformationBox *p; p = (GF_DataInformationBox *)a; fprintf(trace, "<DataInformationBox>"); DumpBox(a, trace); gf_box_dump(p->dref, trace); fprintf(trace, "</DataInformationBox>\n"); return GF_OK;}GF_Err url_dump(GF_Box *a, FILE * trace){ GF_DataEntryURLBox *p; p = (GF_DataEntryURLBox *)a; fprintf(trace, "<URLDataEntryBox"); if (p->location) { fprintf(trace, " URL=\"%s\">\n", p->location); } else { fprintf(trace, ">\n"); if (! (p->flags & 1) ) { fprintf(trace, "<!--ERROR: No location indicated-->\n"); } else { fprintf(trace, "<!--Data is contained in the movie file-->\n"); } } DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</URLDataEntryBox>\n"); return GF_OK;}GF_Err urn_dump(GF_Box *a, FILE * trace){ GF_DataEntryURNBox *p; p = (GF_DataEntryURNBox *)a; fprintf(trace, "<URNDataEntryBox"); if (p->nameURN) fprintf(trace, " URN=\"%s\"", p->nameURN); if (p->location) fprintf(trace, " URL=\"%s\"", p->location); fprintf(trace, ">\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</URNDataEntryBox>\n"); return GF_OK;}GF_Err cprt_dump(GF_Box *a, FILE * trace){ GF_CopyrightBox *p; p = (GF_CopyrightBox *)a; fprintf(trace, "<CopyrightBox LanguageCode=\"%s\" CopyrightNotice=\"%s\">\n", p->packedLanguageCode, p->notice); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</CopyrightBox>\n"); return GF_OK;}static char *format_duration(u64 dur, u32 timescale, char *szDur){ u32 h, m, s, ms; dur = (u32) (( ((Double) (s64) dur)/timescale)*1000); h = (u32) (dur / 3600000); dur -= h*3600000; m = (u32) (dur / 60000); dur -= m*60000; s = (u32) (dur/1000); dur -= s*1000; ms = (u32) (dur); sprintf(szDur, "%02d:%02d:%02d.%03d", h, m, s, ms); return szDur;}GF_Err chpl_dump(GF_Box *a, FILE * trace){ u32 i, count; char szDur[20]; GF_ChapterListBox *p = (GF_ChapterListBox *)a; fprintf(trace, "<ChapterListBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); count = gf_list_count(p->list); for (i=0; i<count; i++) { GF_ChapterEntry *ce = (GF_ChapterEntry *)gf_list_get(p->list, i); fprintf(trace, "<Chapter name=\"%s\" startTime=\"%s\" />\n", ce->name, format_duration(ce->start_time, 1000*10000, szDur)); } fprintf(trace, "</ChapterListBox>\n"); return GF_OK;}GF_Err dpin_dump(GF_Box *a, FILE * trace){ u32 i; GF_ProgressiveDownloadBox *p = (GF_ProgressiveDownloadBox *)a; fprintf(trace, "<ProgressiveDownloadBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); for (i=0; i<p->count; i++) { fprintf(trace, "<DownloadInfo rate=\"%d\" estimatedTime=\"%d\" />\n", p->rates[i], p->times[i]); } fprintf(trace, "</ProgressiveDownloadBox>\n"); return GF_OK;}GF_Err hdlr_dump(GF_Box *a, FILE * trace){ GF_HandlerBox *p = (GF_HandlerBox *)a; if (p->nameUTF8 && (u32) p->nameUTF8[0] == strlen(p->nameUTF8+1)) { fprintf(trace, "<HandlerBox Type=\"%s\" Name=\"%s\" ", gf_4cc_to_str(p->handlerType), p->nameUTF8+1); } else { fprintf(trace, "<HandlerBox Type=\"%s\" Name=\"%s\" ", gf_4cc_to_str(p->handlerType), p->nameUTF8); } fprintf(trace, "reserved1=\"%d\" reserved2=\"", p->reserved1); DumpData(trace, p->reserved2, 12); fprintf(trace, "\""); fprintf(trace, ">\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</HandlerBox>\n"); return GF_OK;}GF_Err iods_dump(GF_Box *a, FILE * trace){ GF_ObjectDescriptorBox *p; p = (GF_ObjectDescriptorBox *)a; fprintf(trace, "<ObjectDescriptorBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); if (p->descriptor) { gf_odf_dump_desc(p->descriptor, trace, 1, 1); } else { fprintf(trace, "<!--WARNING: Object Descriptor not present-->\n"); } fprintf(trace, "</ObjectDescriptorBox>\n"); return GF_OK;}GF_Err trak_dump(GF_Box *a, FILE * trace){ GF_TrackBox *p; p = (GF_TrackBox *)a; fprintf(trace, "<TrackBox>\n"); DumpBox(a, trace); if (p->Header) { gf_box_dump(p->Header, trace); } else { fprintf(trace, "<!--INVALID FILE: Missing Track Header-->\n"); } if (p->References) gf_box_dump(p->References, trace); if (p->meta) gf_box_dump(p->meta, trace); if (p->editBox) gf_box_dump(p->editBox, trace); if (p->Media) gf_box_dump(p->Media, trace); if (p->udta) gf_box_dump(p->udta, trace); gf_box_array_dump(p->boxes, trace); fprintf(trace, "</TrackBox>\n"); return GF_OK;}GF_Err mp4s_dump(GF_Box *a, FILE * trace){ GF_MPEGSampleEntryBox *p; p = (GF_MPEGSampleEntryBox *)a; fprintf(trace, "<MPEGSystemsSampleDescriptionBox DataReferenceIndex=\"%d\">\n", p->dataReferenceIndex); DumpBox(a, trace); if (p->esd) { gf_box_dump(p->esd, trace); } else { fprintf(trace, "<!--INVALID MP4 FILE: ESDBox not present in MPEG Sample Description or corrupted-->\n"); } if (a->type == GF_ISOM_BOX_TYPE_ENCS) { gf_box_dump(p->protection_info, trace); } fprintf(trace, "</MPEGSystemsSampleDescriptionBox>\n"); return GF_OK;}void base_visual_entry_dump(GF_VisualSampleEntryBox *p, FILE * trace){ fprintf(trace, " DataReferenceIndex=\"%d\" Width=\"%d\" Height=\"%d\"", p->dataReferenceIndex, p->Width, p->Height); //dump reserved info fprintf(trace, " XDPI=\"%d\" YDPI=\"%d\" BitDepth=\"%d\"", p->horiz_res, p->vert_res, p->bit_depth); if (strlen((const char*)p->compressor_name) ) fprintf(trace, " CompressorName=\"%s\"\n", p->compressor_name);}GF_Err mp4v_dump(GF_Box *a, FILE * trace){ GF_MPEGVisualSampleEntryBox *p = (GF_MPEGVisualSampleEntryBox *)a; const char *name = p->avc_config ? "AVCSampleEntryBox" : "MPEGVisualSampleDescriptionBox"; fprintf(trace, "<%s", name); base_visual_entry_dump((GF_VisualSampleEntryBox *)p, trace); fprintf(trace, ">\n"); if (p->esd) { gf_box_dump(p->esd, trace); } else if (p->avc_config) { if (p->avc_config) gf_box_dump(p->avc_config, trace); if (p->ipod_ext) gf_box_dump(p->ipod_ext, trace); if (p->descr) gf_box_dump(p->descr, trace); if (p->bitrate) gf_box_dump(p->bitrate, trace); } else { fprintf(trace, "<!--INVALID MP4 FILE: ESDBox not present in MPEG Sample Description or corrupted-->\n"); } if (a->type == GF_ISOM_BOX_TYPE_ENCV) { gf_box_dump(p->protection_info, trace); } DumpBox(a, trace); fprintf(trace, "</%s>\n", name); return GF_OK;}void base_audio_entry_dump(GF_AudioSampleEntryBox *p, FILE * trace){ fprintf(trace, " DataReferenceIndex=\"%d\" SampleRate=\"%d\"", p->dataReferenceIndex, p->samplerate_hi); fprintf(trace, " Channels=\"%d\" BitsPerSample=\"%d\"", p->channel_count, p->bitspersample);}GF_Err mp4a_dump(GF_Box *a, FILE * trace){ GF_MPEGAudioSampleEntryBox *p; p = (GF_MPEGAudioSampleEntryBox *)a; fprintf(trace, "<MPEGAudioSampleDescriptionBox"); base_audio_entry_dump((GF_AudioSampleEntryBox *)p, trace); fprintf(trace, ">\n"); DumpBox(a, trace); if (p->esd) { gf_box_dump(p->esd, trace); } else { fprintf(trace, "<!--INVALID MP4 FILE: ESDBox not present in MPEG Sample Description or corrupted-->\n"); } if (a->type == GF_ISOM_BOX_TYPE_ENCA) { gf_box_dump(p->protection_info, trace); } fprintf(trace, "</MPEGAudioSampleDescriptionBox>\n"); return GF_OK;}GF_Err gnrm_dump(GF_Box *a, FILE * trace){ GF_GenericSampleEntryBox *p = (GF_GenericSampleEntryBox *)a; fprintf(trace, "<SampleDescriptionBox DataReferenceIndex=\"%d\" ExtensionDataSize=\"%d\">\n", p->dataReferenceIndex, p->data_size); a->type = p->EntryType; DumpBox(a, trace); a->type = GF_ISOM_BOX_TYPE_GNRM; fprintf(trace, "</SampleDescriptionBox>\n"); return GF_OK;}GF_Err gnrv_dump(GF_Box *a, FILE * trace){ GF_GenericVisualSampleEntryBox *p = (GF_GenericVisualSampleEntryBox *)a; fprintf(trace, "<VisualSampleDescriptionBox DataReferenceIndex=\"%d\" Version=\"%d\" Revision=\"%d\" Vendor=\"%d\" TemporalQuality=\"%d\" SpacialQuality=\"%d\" Width=\"%d\" Height=\"%d\" HorizontalResolution=\"%d\" VerticalResolution=\"%d\" CompressorName=\"%s\" BitDepth=\"%d\">\n", p->dataReferenceIndex, p->version, p->revision, p->vendor, p->temporal_quality, p->spacial_quality, p->Width, p->Height, p->horiz_res, p->vert_res, p->compressor_name, p->bit_depth); a->type = p->EntryType; DumpBox(a, trace); a->type = GF_ISOM_BOX_TYPE_GNRV; fprintf(trace, "</VisualSampleDescriptionBox>\n"); return GF_OK;}GF_Err gnra_dump(GF_Box *a, FILE * trace){ GF_GenericAudioSampleEntryBox *p = (GF_GenericAudioSampleEntryBox *)a; fprintf(trace, "<AudioSampleDescriptionBox DataReferenceIndex=\"%d\" Version=\"%d\" Revision=\"%d\" Vendor=\"%d\" ChannelCount=\"%d\" BitsPerSample=\"%d\" Samplerate=\"%d\">\n", p->dataReferenceIndex, p->version, p->revision, p->vendor, p->channel_count, p->bitspersample, p->samplerate_hi); a->type = p->EntryType; DumpBox(a, trace); a->type = GF_ISOM_BOX_TYPE_GNRA; fprintf(trace, "</AudioSampleDescriptionBox>\n"); return GF_OK;}GF_Err edts_dump(GF_Box *a, FILE * trace){ GF_EditBox *p; p = (GF_EditBox *)a; fprintf(trace, "<EditBox>\n"); DumpBox(a, trace); gf_box_dump(p->editList, trace); fprintf(trace, "</EditBox>\n"); return GF_OK;}GF_Err udta_dump(GF_Box *a, FILE * trace){ GF_UserDataBox *p; GF_UserDataMap *map; u32 i; p = (GF_UserDataBox *)a; fprintf(trace, "<UserDataBox>\n"); DumpBox(a, trace); i=0; while ((map = (GF_UserDataMap *)gf_list_enum(p->recordList, &i))) { fprintf(trace, "<UDTARecord Type=\"%s\">\n", gf_4cc_to_str(map->boxType)); gf_box_array_dump(map->boxList, trace); fprintf(trace, "</UDTARecord>\n"); } fprintf(trace, "</UserDataBox>\n"); return GF_OK;}GF_Err dref_dump(GF_Box *a, FILE * trace){ GF_DataReferenceBox *p; p = (GF_DataReferenceBox *)a; fprintf(trace, "<DataReferenceBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); gf_box_array_dump(p->boxList, trace); fprintf(trace, "</DataReferenceBox>\n"); return GF_OK;}GF_Err stsd_dump(GF_Box *a, FILE * trace){ GF_SampleDescriptionBox *p; p = (GF_SampleDescriptionBox *)a; fprintf(trace, "<SampleDescriptionBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); gf_box_array_dump(p->boxList, trace); fprintf(trace, "</SampleDescriptionBox>\n");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -