📄 box_dump.c
字号:
GF_Err gppv_dump(GF_Box *a, FILE * trace){ char *szName; GF_3GPPVisualSampleEntryBox *p = (GF_3GPPVisualSampleEntryBox *)a; switch (p->type) { case GF_ISOM_SUBTYPE_3GP_H263: szName = "H263SampleDescription"; break; default: szName = "3GPVisualSampleDescription"; break; } fprintf(trace, "<%sBox", szName); base_visual_entry_dump((GF_VisualSampleEntryBox *)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;}GF_Err gppc_dump(GF_Box *a, FILE * trace){ GF_3GPPConfigBox *p = (GF_3GPPConfigBox *)a; const char *name = gf_4cc_to_str(p->cfg.vendor); switch (p->cfg.type) { case GF_ISOM_SUBTYPE_3GP_AMR: case GF_ISOM_SUBTYPE_3GP_AMR_WB: fprintf(trace, "<AMRConfigurationBox Vendor=\"%s\" Version=\"%d\"", name, p->cfg.decoder_version); fprintf(trace, " FramesPerSample=\"%d\" SupportedModes=\"%x\" ModeRotating=\"%d\"", p->cfg.frames_per_sample, p->cfg.AMR_mode_set, p->cfg.AMR_mode_change_period); fprintf(trace, ">\n"); DumpBox(a, trace); fprintf(trace, "</AMRConfigurationBox>\n"); break; case GF_ISOM_SUBTYPE_3GP_EVRC: fprintf(trace, "<EVRCConfigurationBox Vendor=\"%s\" Version=\"%d\" FramesPerSample=\"%d\" >\n", name, p->cfg.decoder_version, p->cfg.frames_per_sample); DumpBox(a, trace); fprintf(trace, "</EVRCConfigurationBox>\n"); break; case GF_ISOM_SUBTYPE_3GP_QCELP: fprintf(trace, "<QCELPConfigurationBox Vendor=\"%s\" Version=\"%d\" FramesPerSample=\"%d\" >\n", name, p->cfg.decoder_version, p->cfg.frames_per_sample); DumpBox(a, trace); fprintf(trace, "</QCELPConfigurationBox>\n"); break; case GF_ISOM_SUBTYPE_3GP_SMV: fprintf(trace, "<SMVConfigurationBox Vendor=\"%s\" Version=\"%d\" FramesPerSample=\"%d\" >\n", name, p->cfg.decoder_version, p->cfg.frames_per_sample); DumpBox(a, trace); fprintf(trace, "</SMVConfigurationBox>\n"); break; case GF_ISOM_SUBTYPE_3GP_H263: fprintf(trace, "<H263ConfigurationBox Vendor=\"%s\" Version=\"%d\"", name, p->cfg.decoder_version); fprintf(trace, " Profile=\"%d\" Level=\"%d\"", p->cfg.H263_profile, p->cfg.H263_level); fprintf(trace, ">\n"); DumpBox(a, trace); fprintf(trace, "</H263ConfigurationBox>\n"); break; default: break; } return GF_OK;}GF_Err avcc_dump(GF_Box *a, FILE * trace){ u32 i, count; GF_AVCConfigurationBox *p = (GF_AVCConfigurationBox *) a; fprintf(trace, "<AVCConfigurationBox>\n"); fprintf(trace, "<AVCDecoderConfigurationRecord configurationVersion=\"%d\" AVCProfileIndication=\"%d\" profile_compatibility=\"%d\" AVCLevelIndication=\"%d\" nal_unit_size=\"%d\">\n", p->config->configurationVersion, p->config->AVCProfileIndication, p->config->profile_compatibility, p->config->AVCLevelIndication, p->config->nal_unit_size); count = gf_list_count(p->config->sequenceParameterSets); for (i=0; i<count; i++) { GF_AVCConfigSlot *c = (GF_AVCConfigSlot *)gf_list_get(p->config->sequenceParameterSets, i); fprintf(trace, "<sequenceParameterSets size=\"%d\" content=\"", c->size); DumpData(trace, c->data, c->size); fprintf(trace, "\"/>\n"); } count = gf_list_count(p->config->pictureParameterSets); for (i=0; i<count; i++) { GF_AVCConfigSlot *c = (GF_AVCConfigSlot *)gf_list_get(p->config->pictureParameterSets, i); fprintf(trace, "<pictureParameterSets size=\"%d\" content=\"", c->size); DumpData(trace, c->data, c->size); fprintf(trace, "\"/>\n"); } fprintf(trace, "</AVCDecoderConfigurationRecord>\n"); DumpBox(a, trace); fprintf(trace, "</AVCConfigurationBox>\n"); return GF_OK;}GF_Err m4ds_dump(GF_Box *a, FILE * trace){ u32 i; GF_Descriptor *desc; GF_MPEG4ExtensionDescriptorsBox *p = (GF_MPEG4ExtensionDescriptorsBox *) a; fprintf(trace, "<MPEG4ExtensionDescriptorsBox>\n"); i=0; while ((desc = (GF_Descriptor *)gf_list_enum(p->descriptors, &i))) { gf_odf_dump_desc(desc, trace, 1, 1); } DumpBox(a, trace); fprintf(trace, "</MPEG4ExtensionDescriptorsBox>\n"); return GF_OK;}GF_Err btrt_dump(GF_Box *a, FILE * trace){ GF_MPEG4BitRateBox *p = (GF_MPEG4BitRateBox*)a; fprintf(trace, "<MPEG4BitRateBox BufferSizeDB=\"%d\" avgBitRate=\"%d\" maxBitRate=\"%d\">\n", p->bufferSizeDB, p->avgBitrate, p->maxBitrate); DumpBox(a, trace); fprintf(trace, "</MPEG4BitRateBox>\n"); return GF_OK;}GF_Err ftab_dump(GF_Box *a, FILE * trace){ u32 i; GF_FontTableBox *p = (GF_FontTableBox *)a; fprintf(trace, "<FontTableBox>\n"); DumpBox(a, trace); for (i=0; i<p->entry_count; i++) { fprintf(trace, "<FontRecord ID=\"%d\" name=\"%s\"/>\n", p->fonts[i].fontID, p->fonts[i].fontName ? p->fonts[i].fontName : "NULL"); } fprintf(trace, "</FontTableBox>\n"); return GF_OK;}static void gpp_dump_rgba(FILE * trace, char *name, u32 col){ fprintf(trace, "%s=\"%x %x %x %x\"", name, (col>>16)&0xFF, (col>>8)&0xFF, (col)&0xFF, (col>>24)&0xFF);}static void gpp_dump_box(FILE * trace, GF_BoxRecord *rec){ fprintf(trace, "<BoxRecord top=\"%d\" left=\"%d\" bottom=\"%d\" right=\"%d\"/>\n", rec->top, rec->left, rec->bottom, rec->right);}static void gpp_dump_style(FILE * trace, GF_StyleRecord *rec){ fprintf(trace, "<StyleRecord startChar=\"%d\" endChar=\"%d\" fontID=\"%d\" styles=\"", rec->startCharOffset, rec->endCharOffset, rec->fontID); if (!rec->style_flags) { fprintf(trace, "Normal"); } else { if (rec->style_flags & 1) fprintf(trace, "Bold "); if (rec->style_flags & 2) fprintf(trace, "Italic "); if (rec->style_flags & 4) fprintf(trace, "Underlined "); } fprintf(trace, "\" fontSize=\"%d\" ", rec->font_size); gpp_dump_rgba(trace, "text-color", rec->text_color); fprintf(trace, "/>\n");}GF_Err tx3g_dump(GF_Box *a, FILE * trace){ GF_TextSampleEntryBox *p = (GF_TextSampleEntryBox *)a; fprintf(trace, "<TextSampleEntryBox dataReferenceIndex=\"%d\" displayFlags=\"%x\" horizontal-justification=\"%d\" vertical-justification=\"%d\" ", p->dataReferenceIndex, p->displayFlags, p->horizontal_justification, p->vertical_justification); gpp_dump_rgba(trace, "background-color", p->back_color); fprintf(trace, ">\n"); DumpBox(a, trace); fprintf(trace, "<DefaultBox>\n"); gpp_dump_box(trace, &p->default_box); fprintf(trace, "</DefaultBox>\n"); fprintf(trace, "<DefaultStyle>\n"); gpp_dump_style(trace, &p->default_style); fprintf(trace, "</DefaultStyle>\n"); gf_box_dump(p->font_table, trace); fprintf(trace, "</TextSampleEntryBox>\n"); return GF_OK;}GF_Err styl_dump(GF_Box *a, FILE * trace){ u32 i; GF_TextStyleBox*p = (GF_TextStyleBox*)a; fprintf(trace, "<TextStyleBox>\n"); DumpBox(a, trace); for (i=0; i<p->entry_count; i++) gpp_dump_style(trace, &p->styles[i]); fprintf(trace, "</TextStyleBox>\n"); return GF_OK;}GF_Err hlit_dump(GF_Box *a, FILE * trace){ GF_TextHighlightBox*p = (GF_TextHighlightBox*)a; fprintf(trace, "<TextHighlightBox startcharoffset=\"%d\" endcharoffset=\"%d\">\n", p->startcharoffset, p->endcharoffset); DumpBox(a, trace); fprintf(trace, "</TextHighlightBox>\n"); return GF_OK;}GF_Err hclr_dump(GF_Box *a, FILE * trace){ GF_TextHighlightColorBox*p = (GF_TextHighlightColorBox*)a; fprintf(trace, "<TextHighlightBox "); gpp_dump_rgba(trace, "highlight_color", p->hil_color); fprintf(trace, ">\n"); DumpBox(a, trace); fprintf(trace, "</TextHighlightBox>\n"); return GF_OK;}GF_Err krok_dump(GF_Box *a, FILE * trace){ u32 i; GF_TextKaraokeBox*p = (GF_TextKaraokeBox*)a; fprintf(trace, "<TextKaraokeBox highlight_starttime=\"%d\">\n", p->highlight_starttime); DumpBox(a, trace); for (i=0; i<p->entrycount; i++) { fprintf(trace, "<KaraokeRecord highlight_endtime=\"%d\" start_charoffset=\"%d\" end_charoffset=\"%d\"/>\n", p->records[i].highlight_endtime, p->records[i].start_charoffset, p->records[i].end_charoffset); } fprintf(trace, "</TextKaraokeBox>\n"); return GF_OK;}GF_Err dlay_dump(GF_Box *a, FILE * trace){ GF_TextScrollDelayBox*p = (GF_TextScrollDelayBox*)a; fprintf(trace, "<TextScrollDelayBox scroll_delay=\"%d\">\n", p->scroll_delay); DumpBox(a, trace); fprintf(trace, "</TextScrollDelayBox>\n"); return GF_OK;}GF_Err href_dump(GF_Box *a, FILE * trace){ GF_TextHyperTextBox*p = (GF_TextHyperTextBox*)a; fprintf(trace, "<TextHyperTextBox startcharoffset=\"%d\" startcharoffset=\"%d\" URL=\"%s\" altString=\"%s\">\n", p->startcharoffset, p->endcharoffset, p->URL ? p->URL : "NULL", p->URL_hint ? p->URL_hint : "NULL"); DumpBox(a, trace); fprintf(trace, "</TextHyperTextBox>\n"); return GF_OK;}GF_Err tbox_dump(GF_Box *a, FILE * trace){ GF_TextBoxBox*p = (GF_TextBoxBox*)a; fprintf(trace, "<TextBoxBox>\n"); gpp_dump_box(trace, &p->box); DumpBox(a, trace); fprintf(trace, "</TextBoxBox>\n"); return GF_OK;}GF_Err blnk_dump(GF_Box *a, FILE * trace){ GF_TextBlinkBox*p = (GF_TextBlinkBox*)a; fprintf(trace, "<TextBlinkBox start_charoffset=\"%d\" end_charoffset=\"%d\">\n", p->startcharoffset, p->endcharoffset); DumpBox(a, trace); fprintf(trace, "</TextBlinkBox>\n"); return GF_OK;}GF_Err twrp_dump(GF_Box *a, FILE * trace){ GF_TextWrapBox*p = (GF_TextWrapBox*)a; fprintf(trace, "<TextWrapBox wrap_flag=\"%s\">\n", p->wrap_flag ? ( (p->wrap_flag>1) ? "Reserved" : "Automatic" ) : "No Wrap"); DumpBox(a, trace); fprintf(trace, "</TextWrapBox>\n"); return GF_OK;}GF_Err meta_dump(GF_Box *a, FILE * trace){ GF_MetaBox *p; p = (GF_MetaBox *)a; fprintf(trace, "<MetaBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); if (p->handler) gf_box_dump(p->handler, trace); if (p->primary_resource) gf_box_dump(p->primary_resource, trace); if (p->file_locations) gf_box_dump(p->file_locations, trace); if (p->item_locations) gf_box_dump(p->item_locations, trace); if (p->protections) gf_box_dump(p->protections, trace); if (p->item_infos) gf_box_dump(p->item_infos, trace); if (p->IPMP_control) gf_box_dump(p->IPMP_control, trace); gf_box_array_dump(p->other_boxes, trace); fprintf(trace, "</MetaBox>\n"); return GF_OK;}GF_Err xml_dump(GF_Box *a, FILE * trace){ GF_XMLBox *p = (GF_XMLBox *)a; fprintf(trace, "<XMLBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "<![CDATA[\n"); fwrite(p->xml, p->xml_length, 1, trace); fprintf(trace, "]]>\n"); fprintf(trace, "</XMLBox>\n"); return GF_OK;}GF_Err bxml_dump(GF_Box *a, FILE * trace){ GF_BinaryXMLBox *p = (GF_BinaryXMLBox *)a; fprintf(trace, "<BinaryXMLBox binarySize=\"%d\">\n", p->data_length); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</BinaryXMLBox>\n"); return GF_OK;}GF_Err pitm_dump(GF_Box *a, FILE * trace){ GF_PrimaryItemBox *p = (GF_PrimaryItemBox *)a; fprintf(trace, "<PrimaryItemBox item_ID=\"%d\">\n", p->item_ID); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</PrimaryItemBox>\n"); return GF_OK;}GF_Err ipro_dump(GF_Box *a, FILE * trace){ GF_ItemProtectionBox *p = (GF_ItemProtectionBox *)a; fprintf(trace, "<ItemProtectionBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); gf_box_array_dump(p->protection_information, trace); fprintf(trace, "</ItemProtectionBox>\n"); return GF_OK;}GF_Err infe_dump(GF_Box *a, FILE * trace){ GF_ItemInfoEntryBox *p = (GF_ItemInfoEntryBox *)a; fprintf(trace, "<ItemInfoEntryBox item_ID=\"%d\" item_protection_index=\"%d\" item_name=\"%s\" content_type=\"%s\" content_encoding=\"%s\">\n", p->item_ID, p->item_protection_index, p->item_name, p->content_type, p->content_encoding); DumpBox(a, trace); gf_full_box_dump(a, trace); fprintf(trace, "</ItemInfoEntryBox>\n"); return GF_OK;}GF_Err iinf_dump(GF_Box *a, FILE * trace){ GF_ItemInfoBox *p = (GF_ItemInfoBox *)a; fprintf(trace, "<ItemInfoBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); gf_box_array_dump(p->item_infos, trace); fprintf(trace, "</ItemInfoBox>\n"); return GF_OK;}GF_Err iloc_dump(GF_Box *a, FILE * trace){ u32 i, j, count, count2; GF_ItemLocationBox *p = (GF_ItemLocationBox*)a; fprintf(trace, "<ItemLocationBox offset_size=\"%d\" length_size=\"%d\" base_offset_size=\"%d\">\n", p->offset_size, p->length_size, p->base_offset_size); DumpBox(a, trace); gf_full_box_dump(a, trace); count = gf_list_count(p->location_entries); for (i=0;i<count;i++) { GF_ItemLocationEntry *ie = (GF_ItemLocationEntry *)gf_list_get(p->location_entries, i); count2 = gf_list_count(ie->extent_entries); fprintf(trace, "<ItemLocationEntry item_ID=\"%d\" data_reference_index=\"%d\" base_offset=\""LLD"\" />\n", ie->item_ID, ie->data_reference_index, LLD_CAST ie->base_offset); for (j=0; j<count2; j++) { GF_ItemExtentEntry *iee = (GF_ItemExtentEntry *)gf_list_get(ie->extent_entries, j); fprintf(trace, "<ItemExtentEntry extent_offset=\""LLD"\" extent_length=\""LLD"\" />\n", LLD_CAST iee->extent_offset, LLD_CAST iee->extent_length); } } fprintf(trace, "</ItemLocationBox>\n"); return GF_OK;}GF_Err imif_dump(GF_Box *a, FILE * trace){ u32 i, count; GF_IPMPInfoBox *p = (GF_IPMPInfoBox*)a; fprintf(trace, "<IPMPInfoBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); count = gf_list_count(p->descriptors); for (i=0; i<count; i++) { GF_Descriptor *d = (GF_Descriptor *)gf_list_get(p->descriptors, i); gf_odf_dump_desc(d, trace, 0, 1); } fprintf(trace, "</IPMPInfoBox>\n"); return GF_OK;}GF_Err ipmc_dump(GF_Box *a, FILE * trace){ u32 i, count; GF_IPMPControlBox *p = (GF_IPMPControlBox*)a; fprintf(trace, "<IPMPControlBox>\n"); DumpBox(a, trace); gf_full_box_dump(a, trace); if (p->ipmp_tools) gf_odf_dump_desc(p->ipmp_tools, trace, 0, 1); count = gf_list_count(p->descriptors); for (i=0; i<count; i++) { GF_Descriptor *d = (GF_Descriptor *)gf_list_get(p->descriptors, i); gf_odf_dump_desc(d, trace, 0, 1); } fprintf(trace, "</IPMPControlBox>\n"); return GF_OK;}GF_Err hinf_dump(GF_Box *a, FILE * trace){ GF_HintInfoBox *p; p = (GF_HintInfoBox *)a; fprintf(trace, "<HintInfoBox>\n"); DumpBox(a, trace); gf_box_array_dump(p->boxList, trace); fprintf(trace, "</HintInfoBox>\n"); return GF_OK;}GF_Err trpy_dump(GF_Box *a, FILE * trace){ GF_TRPYBox *p; p = (GF_TRPYBox *)a; fprintf(trace, "<LargeTotalRTPBytesBox RTPBytesSent=\""LLD"\">\n", LLD_CAST p->nbBytes); DumpBox(a, trace); fprintf(trace, "</LargeTotalRTPBytesBox>\n"); return GF_OK;}GF_Err totl_dump(GF_Box *a, FILE * trace){ GF_TOTLBox *p; p = (GF_TOTLBox *)a; fprintf(trace, "<TotalRTPBytesBox RTPBytesSent=\"%d\">\n", p->nbBytes); DumpBox(a, trace); fprintf(trace, "</TotalRTPBytesBox>\n"); return GF_OK;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -