📄 box_dump.c
字号:
return GF_OK;}GF_Err stts_dump(GF_Box *a, FILE * trace){ GF_TimeToSampleBox *p; u32 i; GF_SttsEntry *t; p = (GF_TimeToSampleBox *)a; fprintf(trace, "<TimeToSampleBox EntryCount=\"%d\">\n", gf_list_count(p->entryList)); DumpBox(a, trace); gf_full_box_dump(a, trace); i=0; while ((t = (GF_SttsEntry *)gf_list_enum(p->entryList, &i))) { fprintf(trace, "<TimeToSampleEntry SampleDelta=\"%d\" SampleCount=\"%d\"/>\n", t->sampleDelta, t->sampleCount); } fprintf(trace, "</TimeToSampleBox>\n"); return GF_OK;}GF_Err ctts_dump(GF_Box *a, FILE * trace){ GF_CompositionOffsetBox *p; u32 i; GF_DttsEntry *t; p = (GF_CompositionOffsetBox *)a; fprintf(trace, "<CompositionOffsetBox EntryCount=\"%d\">\n", gf_list_count(p->entryList)); DumpBox(a, trace); gf_full_box_dump(a, trace); i=0; while ((t = (GF_DttsEntry *)gf_list_enum(p->entryList, &i))) { fprintf(trace, "<CompositionOffsetEntry CompositionOffset=\"%d\" SampleCount=\"%d\"/>\n", t->decodingOffset, t->sampleCount); } fprintf(trace, "</CompositionOffsetBox>\n"); return GF_OK;}GF_Err stsh_dump(GF_Box *a, FILE * trace){ GF_ShadowSyncBox *p; u32 i; GF_StshEntry *t; p = (GF_ShadowSyncBox *)a; fprintf(trace, "<SyncShadowBox EntryCount=\"%d\">\n", gf_list_count(p->entries)); DumpBox(a, trace); gf_full_box_dump(a, trace); i=0; while ((t = (GF_StshEntry *)gf_list_enum(p->entries, &i))) { fprintf(trace, "<SyncShadowEntry ShadowedSample=\"%d\" SyncSample=\"%d\"/>\n", t->shadowedSampleNumber, t->syncSampleNumber); } fprintf(trace, "</SyncShadowBox>\n"); return GF_OK;}GF_Err elst_dump(GF_Box *a, FILE * trace){ GF_EditListBox *p; u32 i; GF_EdtsEntry *t; p = (GF_EditListBox *)a; fprintf(trace, "<EditListBox EntryCount=\"%d\">\n", gf_list_count(p->entryList)); DumpBox(a, trace); gf_full_box_dump(a, trace); i=0; while ((t = (GF_EdtsEntry *)gf_list_enum(p->entryList, &i))) { fprintf(trace, "<EditListEntry Duration=\""LLD"\" MediaTime=\""LLD"\" MediaRate=\"%d\"/>\n", LLD_CAST t->segmentDuration, LLD_CAST t->mediaTime, t->mediaRate); } fprintf(trace, "</EditListBox>\n"); return GF_OK;}GF_Err stsc_dump(GF_Box *a, FILE * trace){ GF_SampleToChunkBox *p; u32 i; GF_StscEntry *t; p = (GF_SampleToChunkBox *)a; fprintf(trace, "<SampleToChunkBox EntryCount=\"%d\">\n", gf_list_count(p->entryList)); DumpBox(a, trace); gf_full_box_dump(a, trace); i=0; while ((t = (GF_StscEntry *)gf_list_enum(p->entryList, &i))) { fprintf(trace, "<SampleToChunkEntry FirstChunk=\"%d\" SamplesPerChunk=\"%d\" SampleDescriptionIndex=\"%d\"/>\n", t->firstChunk, t->samplesPerChunk, t->sampleDescriptionIndex); } fprintf(trace, "</SampleToChunkBox>\n"); return GF_OK;}GF_Err stsz_dump(GF_Box *a, FILE * trace){ GF_SampleSizeBox *p; u32 i; p = (GF_SampleSizeBox *)a; fprintf(trace, "<%sBox SampleCount=\"%d\"", (a->type == GF_ISOM_BOX_TYPE_STSZ) ? "SampleSize" : "CompactSampleSize", p->sampleCount); if (a->type == GF_ISOM_BOX_TYPE_STSZ) { if (p->sampleSize) { fprintf(trace, " ConstantSampleSize=\"%d\"", p->sampleSize); } } else { fprintf(trace, " SampleSizeBits=\"%d\"", p->sampleSize); } fprintf(trace, ">\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); if ((a->type != GF_ISOM_BOX_TYPE_STSZ) || !p->sampleSize) { if (!p->sizes) { fprintf(trace, "<!--WARNING: No Sample Size indications-->\n"); } else { for (i=0; i<p->sampleCount; i++) { fprintf(trace, "<SampleSizeEntry Size=\"%d\"/>\n", p->sizes[i]); } } } fprintf(trace, "</%sBox>\n", (a->type == GF_ISOM_BOX_TYPE_STSZ) ? "SampleSize" : "CompactSampleSize"); return GF_OK;}GF_Err stco_dump(GF_Box *a, FILE * trace){ GF_ChunkOffsetBox *p; u32 i; p = (GF_ChunkOffsetBox *)a; fprintf(trace, "<ChunkOffsetBox EntryCount=\"%d\">\n", p->entryCount); DumpBox(a, trace); gf_full_box_dump(a, trace); if (!p->offsets) { fprintf(trace, "<!--Warning: No Chunk Offsets indications-->\n"); } else { for (i=0; i<p->entryCount; i++) { fprintf(trace, "<ChunkEntry offset=\"%d\"/>\n", p->offsets[i]); } } fprintf(trace, "</ChunkOffsetBox>\n"); return GF_OK;}GF_Err stss_dump(GF_Box *a, FILE * trace){ GF_SyncSampleBox *p; u32 i; p = (GF_SyncSampleBox *)a; fprintf(trace, "<SyncSampleBox EntryCount=\"%d\">\n", p->entryCount); DumpBox(a, trace); gf_full_box_dump(a, trace); if (!p->sampleNumbers) { fprintf(trace, "<!--Warning: No Key Frames indications-->\n"); } else { for (i=0; i<p->entryCount; i++) { fprintf(trace, "<SyncSampleEntry sampleNumber=\"%d\"/>\n", p->sampleNumbers[i]); } } fprintf(trace, "</SyncSampleBox>\n"); return GF_OK;}GF_Err stdp_dump(GF_Box *a, FILE * trace){ GF_DegradationPriorityBox *p; u32 i; p = (GF_DegradationPriorityBox *)a; fprintf(trace, "<DegradationPriorityBox EntryCount=\"%d\">\n", p->entryCount); DumpBox(a, trace); gf_full_box_dump(a, trace); if (!p->priorities) { fprintf(trace, "<!--Warning: No Degradation Priority indications-->\n"); } else { for (i=0; i<p->entryCount; i++) { fprintf(trace, "<DegradationPriorityEntry DegradationPriority=\"%d\"/>\n", p->priorities[i]); } } fprintf(trace, "</DegradationPriorityBox>\n"); return GF_OK;}GF_Err sdtp_dump(GF_Box *a, FILE * trace){ GF_SampleDependencyTypeBox *p; u32 i; p = (GF_SampleDependencyTypeBox*)a; fprintf(trace, "<SampleDependencyTypeBox SampleCount=\"%d\">\n", p->sampleCount); DumpBox(a, trace); gf_full_box_dump(a, trace); if (!p->sample_info) { fprintf(trace, "<!--Warning: No sample dependencies indications-->\n"); } else { for (i=0; i<p->sampleCount; i++) { u8 flag = p->sample_info[i]; fprintf(trace, "<SampleDependencyEntry "); switch ( (flag >> 4) & 3) { case 0: fprintf(trace, "dependsOnOther=\"unknown\" "); break; case 1: fprintf(trace, "dependsOnOther=\"yes\" "); break; case 2: fprintf(trace, "dependsOnOther=\"no\" "); break; case 3: fprintf(trace, "dependsOnOther=\"!! RESERVED !!\" "); break; } switch ( (flag >> 2) & 3) { case 0: fprintf(trace, "dependedOn=\"unknown\" "); break; case 1: fprintf(trace, "dependedOn=\"yes\" "); break; case 2: fprintf(trace, "dependedOn=\"no\" "); break; case 3: fprintf(trace, "dependedOn=\"!! RESERVED !!\" "); break; } switch ( flag & 3) { case 0: fprintf(trace, "hasRedundancy=\"unknown\" "); break; case 1: fprintf(trace, "hasRedundancy=\"yes\" "); break; case 2: fprintf(trace, "hasRedundancy=\"no\" "); break; case 3: fprintf(trace, "hasRedundancy=\"!! RESERVED !!\" "); break; } fprintf(trace, " />\n"); } } fprintf(trace, "</SampleDependencyTypeBox>\n"); return GF_OK;}GF_Err co64_dump(GF_Box *a, FILE * trace){ GF_ChunkLargeOffsetBox *p; u32 i; p = (GF_ChunkLargeOffsetBox *)a; fprintf(trace, "<ChunkLargeOffsetBox EntryCount=\"%d\">\n", p->entryCount); DumpBox(a, trace); gf_full_box_dump(a, trace); if (!p->offsets) { fprintf(trace, "<Warning: No Chunk Offsets indications/>\n"); } else { for (i=0; i<p->entryCount; i++) fprintf(trace, "<ChunkOffsetEntry offset=\""LLD"\"/>\n", LLD_CAST p->offsets[i]); } fprintf(trace, "</ChunkLargeOffsetBox>\n"); return GF_OK;}GF_Err esds_dump(GF_Box *a, FILE * trace){ GF_ESDBox *p; p = (GF_ESDBox *)a; fprintf(trace, "<MPEG4ESDescriptorBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); if (p->desc) { gf_odf_dump_desc(p->desc, trace, 1, 1); } else { fprintf(trace, "<!--INVALID MP4 FILE: ESD not present in MPEG Sample Description or corrupted-->\n"); } fprintf(trace, "</MPEG4ESDescriptorBox>\n"); return GF_OK;}GF_Err minf_dump(GF_Box *a, FILE * trace){ GF_MediaInformationBox *p; p = (GF_MediaInformationBox *)a; fprintf(trace, "<MediaInformationBox>\n"); DumpBox(a, trace); gf_box_dump(p->InfoHeader, trace); gf_box_dump(p->dataInformation, trace); gf_box_dump(p->sampleTable, trace); fprintf(trace, "</MediaInformationBox>\n"); return GF_OK;}GF_Err tkhd_dump(GF_Box *a, FILE * trace){ GF_TrackHeaderBox *p; p = (GF_TrackHeaderBox *)a; fprintf(trace, "<TrackHeaderBox "); fprintf(trace, "CreationTime=\""LLD"\" ModificationTime=\""LLD"\" TrackID=\"%d\" Duration=\""LLD"\"", LLD_CAST p->creationTime, LLD_CAST p->modificationTime, p->trackID, LLD_CAST p->duration); if (p->volume) { fprintf(trace, " Volume=\"%.2f\"", (Float)p->volume / 256); } else if (p->width || p->height) { fprintf(trace, " Width=\"%.2f\" Height=\"%.2f\"", (Float)p->width / 65536, (Float)p->height / 65536); if (p->layer) fprintf(trace, " Layer=\"%d\"", p->layer); if (p->alternate_group) fprintf(trace, " AlternateGroup=\"%d\"", p->alternate_group); } fprintf(trace, ">\n"); if (p->width || p->height) { fprintf(trace, "<Matrix m11=\"0x%.8x\" m12=\"0x%.8x\" m13=\"0x%.8x\" \ m21=\"0x%.8x\" m22=\"0x%.8x\" m23=\"0x%.8x\" \ m31=\"0x%.8x\" m32=\"0x%.8x\" m33=\"0x%.8x\"/>", p->matrix[0], p->matrix[1], p->matrix[2], p->matrix[3], p->matrix[4], p->matrix[5], p->matrix[6], p->matrix[7], p->matrix[8]); } DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</TrackHeaderBox>\n"); return GF_OK;}GF_Err tref_dump(GF_Box *a, FILE * trace){ GF_TrackReferenceBox *p; p = (GF_TrackReferenceBox *)a; fprintf(trace, "<TrackReferenceBox>\n"); DumpBox(a, trace); gf_box_array_dump(p->boxList, trace); fprintf(trace, "</TrackReferenceBox>\n"); return GF_OK;}GF_Err mdia_dump(GF_Box *a, FILE * trace){ GF_MediaBox *p; p = (GF_MediaBox *)a; fprintf(trace, "<MediaBox>\n"); DumpBox(a, trace); gf_box_dump(p->mediaHeader, trace); gf_box_dump(p->handler, trace); gf_box_dump(p->information, trace); fprintf(trace, "</MediaBox>\n"); return GF_OK;}GF_Err defa_dump(GF_Box *a, FILE * trace){ fprintf(trace, "<UnknownBox>\n"); DumpBox(a, trace); fprintf(trace, "</UnknownBox>\n"); return GF_OK;}GF_Err void_dump(GF_Box *a, FILE * trace){ fprintf(trace, "<VoidBox/>\n"); return GF_OK;}GF_Err ftyp_dump(GF_Box *a, FILE * trace){ GF_FileTypeBox *p; u32 i; p = (GF_FileTypeBox *)a; fprintf(trace, "<FileTypeBox MajorBrand=\"%s\" MinorVersion=\"%d\">\n", gf_4cc_to_str(p->majorBrand), p->minorVersion); DumpBox(a, trace); for (i=0; i<p->altCount; i++) { fprintf(trace, "<BrandEntry AlternateBrand=\"%s\"/>\n", gf_4cc_to_str(p->altBrand[i])); } fprintf(trace, "</FileTypeBox>\n"); return GF_OK;}GF_Err padb_dump(GF_Box *a, FILE * trace){ GF_PaddingBitsBox *p; u32 i; p = (GF_PaddingBitsBox *)a; fprintf(trace, "<PaddingBitsBox EntryCount=\"%d\">\n", p->SampleCount); DumpBox(a, trace); for (i=0; i<p->SampleCount; i+=1) { fprintf(trace, "<PaddingBitsEntry PaddingBits=\"%d\"/>\n", p->padbits[i]); } fprintf(trace, "</PaddingBitsBox>\n"); return GF_OK;}GF_Err stsf_dump(GF_Box *a, FILE * trace){ GF_SampleFragmentBox *p; GF_StsfEntry *ent; u32 i, j, count; p = (GF_SampleFragmentBox *)a; count = gf_list_count(p->entryList); fprintf(trace, "<SampleFragmentBox EntryCount=\"%d\">\n", count); DumpBox(a, trace); for (i=0; i<count; i++) { ent = (GF_StsfEntry *)gf_list_get(p->entryList, i); fprintf(trace, "<SampleFragmentEntry SampleNumber=\"%d\" FragmentCount=\"%d\">\n", ent->SampleNumber, ent->fragmentCount); for (j=0;j<ent->fragmentCount;j++) fprintf(trace, "<FragmentSizeEntry size=\"%d\"/>\n", ent->fragmentSizes[j]); fprintf(trace, "</SampleFragmentEntry>\n"); } fprintf(trace, "</SampleFragmentBox>\n"); return GF_OK;}GF_Err gppa_dump(GF_Box *a, FILE * trace){ char *szName; GF_3GPPAudioSampleEntryBox *p = (GF_3GPPAudioSampleEntryBox *)a; switch (p->type) { case GF_ISOM_SUBTYPE_3GP_AMR: szName = "AMRSampleDescription"; break; case GF_ISOM_SUBTYPE_3GP_AMR_WB: szName = "AMR_WB_SampleDescription"; break; case GF_ISOM_SUBTYPE_3GP_EVRC: szName = "EVRCSampleDescription"; break; case GF_ISOM_SUBTYPE_3GP_QCELP: szName = "QCELPSampleDescription"; break; case GF_ISOM_SUBTYPE_3GP_SMV: szName = "SMVSampleDescription"; break; default: szName = "3GPAudioSampleDescription"; break; } fprintf(trace, "<%sBox", szName); base_audio_entry_dump((GF_AudioSampleEntryBox *)p, trace); fprintf(trace, ">\n"); DumpBox(a, trace); if (p->info) { gf_box_dump(p->info, trace); } else { fprintf(trace, "<!--INVALID 3GPP FILE: Config not present in Sample Description-->\n"); } fprintf(trace, "</%sBox>\n", szName); return GF_OK;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -