📄 odf_dump.c
字号:
indent--; EndElement(trace, ListName, indent, XMTDump, 1); return GF_OK;}GF_Err DumpDescListFilter(GF_List *list, FILE *trace, u32 indent, const char *ListName, Bool XMTDump, u8 tag_only){ u32 i, count, num_desc; GF_Descriptor *desc; char ind_buf[OD_MAX_TREE]; if (!list) return GF_OK; count = gf_list_count(list); num_desc = 0; for (i=0; i<count; i++) { desc = (GF_Descriptor *)gf_list_get(list, i); if (desc->tag == tag_only) num_desc++; } if (!num_desc) return GF_OK; StartElement(trace, ListName, indent, XMTDump, 1); indent++; OD_FORMAT_INDENT(ind_buf, indent); for (i=0; i<count; i++) { desc = (GF_Descriptor *)gf_list_get(list, i); if (desc->tag == tag_only) { //add offset if not XMT if (!XMTDump) fprintf(trace, "%s", ind_buf); gf_odf_dump_desc(desc, trace, indent, XMTDump); } } indent--; EndElement(trace, ListName, indent, XMTDump, 1); return GF_OK;}GF_Err gf_odf_dump_iod(GF_InitialObjectDescriptor *iod, FILE *trace, u32 indent, Bool XMTDump){ StartDescDump(trace, "InitialObjectDescriptor", indent, XMTDump); indent++; StartAttribute(trace, "objectDescriptorID", indent, XMTDump); if (XMTDump) { fprintf(trace, "od%d", iod->objectDescriptorID); EndAttribute(trace, indent, XMTDump); DumpInt(trace, "binaryID", iod->objectDescriptorID, indent, XMTDump); } else { fprintf(trace, "%d", iod->objectDescriptorID); EndAttribute(trace, indent, XMTDump); } EndAttributes(trace, indent, XMTDump); StartSubElement(trace, "Profiles", indent, XMTDump); DumpInt(trace, "audioProfileLevelIndication", iod->audio_profileAndLevel, indent, XMTDump); DumpInt(trace, "visualProfileLevelIndication", iod->visual_profileAndLevel, indent, XMTDump); DumpInt(trace, "sceneProfileLevelIndication", iod->scene_profileAndLevel, indent, XMTDump); DumpInt(trace, "graphicsProfileLevelIndication", iod->graphics_profileAndLevel, indent, XMTDump); DumpInt(trace, "ODProfileLevelIndication", iod->OD_profileAndLevel, indent, XMTDump); DumpBool(trace, "includeInlineProfileLevelFlag", iod->inlineProfileFlag, indent, XMTDump); EndSubElement(trace, indent, XMTDump); if (iod->URLString) { StartSubElement(trace, "URL", indent, XMTDump); DumpString(trace, "URLstring", iod->URLString, indent, XMTDump); EndSubElement(trace, indent, XMTDump); } if (XMTDump) { StartElement(trace, "Descr", indent, XMTDump, 1); indent++; } //ESDescr DumpDescList(iod->ESDescriptors, trace, indent, "esDescr", XMTDump, 0); DumpDescList(iod->OCIDescriptors, trace, indent, "ociDescr", XMTDump, 0); DumpDescListFilter(iod->IPMP_Descriptors, trace, indent, "ipmpDescrPtr", XMTDump, GF_ODF_IPMP_PTR_TAG); DumpDescListFilter(iod->IPMP_Descriptors, trace, indent, "ipmpDescr", XMTDump, GF_ODF_IPMP_TAG); DumpDescList(iod->extensionDescriptors, trace, indent, "extDescr", XMTDump, 0); if (iod->IPMPToolList) { StartElement(trace, "toolListDescr" , indent, XMTDump, 0); gf_odf_dump_desc(iod->IPMPToolList, trace, indent + (XMTDump ? 1 : 0), XMTDump); EndElement(trace, "toolListDescr" , indent, XMTDump, 0); } if (XMTDump) { indent--; EndElement(trace, "Descr", indent, XMTDump, 1); } indent--; EndDescDump(trace, "InitialObjectDescriptor", indent, XMTDump); return GF_OK;}GF_Err gf_odf_dump_esd(GF_ESD *esd, FILE *trace, u32 indent, Bool XMTDump){ GF_MuxInfo *mi; u32 i; StartDescDump(trace, "ES_Descriptor", indent, XMTDump); indent++; StartAttribute(trace, "ES_ID", indent, XMTDump); if (XMTDump) { fprintf(trace, "es%d", esd->ESID); EndAttribute(trace, indent, XMTDump); DumpInt(trace, "binaryID", esd->ESID, indent, XMTDump); } else { fprintf(trace, "%d", esd->ESID); EndAttribute(trace, indent, XMTDump); } DumpInt(trace, "streamPriority", esd->streamPriority, indent, XMTDump); if (XMTDump) { if (esd->dependsOnESID) { StartAttribute(trace, "dependsOn_ES_ID", indent, XMTDump); fprintf(trace, "es%d", esd->dependsOnESID); EndAttribute(trace, indent, XMTDump); } if (esd->OCRESID) { StartAttribute(trace, "OCR_ES_ID", indent, XMTDump); fprintf(trace, "es%d", esd->OCRESID); EndAttribute(trace, indent, XMTDump); } } else { if (esd->dependsOnESID) DumpInt(trace, "dependsOn_ES_ID", esd->dependsOnESID, indent, XMTDump); if (esd->OCRESID) DumpInt(trace, "OCR_ES_ID", esd->OCRESID, indent, XMTDump); } EndAttributes(trace, indent, XMTDump); if (esd->URLString) { StartSubElement(trace, "URL", indent, XMTDump); DumpString(trace, "URLstring", esd->URLString, indent, XMTDump); EndSubElement(trace, indent, XMTDump); } if (esd->decoderConfig) { StartElement(trace, "decConfigDescr" , indent, XMTDump, 0); gf_odf_dump_desc(esd->decoderConfig, trace, indent + (XMTDump ? 1 : 0), XMTDump); EndElement(trace, "decConfigDescr" , indent, XMTDump, 0); } if (esd->slConfig) { StartElement(trace, "slConfigDescr" , indent, XMTDump, 0); gf_odf_dump_desc(esd->slConfig, trace, indent + (XMTDump ? 1 : 0), XMTDump); EndElement(trace, "slConfigDescr" , indent, XMTDump, 0); } if (esd->ipiPtr) { StartElement(trace, "ipiPtr" , indent, XMTDump, 0); gf_odf_dump_desc(esd->ipiPtr, trace, indent + (XMTDump ? 1 : 0), XMTDump); EndElement(trace, "ipiPtr" , indent, XMTDump, 0); } DumpDescList(esd->IPIDataSet, trace, indent, "ipIDS", XMTDump, 0); DumpDescList(esd->IPMPDescriptorPointers, trace, indent, "ipmpDescrPtr", XMTDump, 0); if (esd->qos) { StartElement(trace, "qosDescr" , indent, XMTDump, 0); gf_odf_dump_desc(esd->qos, trace, indent + (XMTDump ? 1 : 0), XMTDump); EndElement(trace, "qosDescr" , indent, XMTDump, 0); } if (esd->langDesc) { StartElement(trace, "langDescr" , indent, XMTDump, 0); gf_odf_dump_desc(esd->langDesc, trace, indent + (XMTDump ? 1 : 0), XMTDump); EndElement(trace, "langDescr" , indent, XMTDump, 0); } if (esd->RegDescriptor) { StartElement(trace, "regDescr" , indent, XMTDump, 0); gf_odf_dump_desc(esd->RegDescriptor, trace, indent + (XMTDump ? 1 : 0), XMTDump); EndElement(trace, "regDescr" , indent, XMTDump, 0); } mi = NULL; i=0; while ((mi = (GF_MuxInfo *)gf_list_enum(esd->extensionDescriptors, &i))) { if (mi->tag == GF_ODF_MUXINFO_TAG) { gf_list_rem(esd->extensionDescriptors, i-1); break; } mi = NULL; } DumpDescList(esd->extensionDescriptors, trace, indent, "extDescr", XMTDump, 0); if (mi) { gf_list_insert(esd->extensionDescriptors, mi, i); if (XMTDump) { gf_odf_dump_desc(mi, trace, indent, 1); } else { StartElement(trace, "muxInfo" , indent, 0, 0); gf_odf_dump_desc(mi, trace, indent, 0); EndElement(trace, "muxInfo" , indent, 0, 0); } } indent--; EndDescDump(trace, "ES_Descriptor", indent, XMTDump); return GF_OK;}GF_Err gf_odf_dump_bifs_cfg(GF_BIFSConfig *dsi, FILE *trace, u32 indent, Bool XMTDump){ u32 i, count; StartDescDump(trace, (dsi->version==1) ? "BIFSConfig" : "BIFSv2Config", indent, XMTDump); indent++; if (dsi->version==2) { DumpBool(trace, "use3DMeshCoding", 0, indent, XMTDump); DumpBool(trace, "usePredictiveMFField", 0, indent, XMTDump); } DumpInt(trace, "nodeIDbits", dsi->nodeIDbits, indent, XMTDump); DumpInt(trace, "routeIDbits", dsi->routeIDbits, indent, XMTDump); if (dsi->version==2) DumpInt(trace, "protoIDbits", dsi->protoIDbits, indent, XMTDump); count = gf_list_count(dsi->elementaryMasks); if (count) { EndAttributes(trace, indent, XMTDump); /*TODO check XMT-A syntax for anim mask*/ StartDescDump(trace, "AnimationMask" , indent, XMTDump); DumpBool(trace, "randomAccess", dsi->randomAccess, indent, XMTDump); EndAttributes(trace, indent, XMTDump); for (i=0; i<count; i++) { GF_ElementaryMask *em = (GF_ElementaryMask *)gf_list_get(dsi->elementaryMasks, i); StartDescDump(trace, "ElementaryMask" , indent, XMTDump); if (em->node_id) DumpInt(trace, "atNode", em->node_id, indent, XMTDump); else if (em->node_name) DumpString(trace, "atNode", em->node_name, indent, XMTDump); EndAttributes(trace, indent, XMTDump); if (XMTDump) EndDescDump(trace, "ElementaryMask", indent, 1); else EndDescDump(trace, "ElementaryMask", indent, 0); } EndDescDump(trace, "AnimationMask", indent, XMTDump); indent--; EndDescDump(trace, (dsi->version==1) ? "BIFSConfig" : "BIFSv2Config", indent, XMTDump); return GF_OK; } if (XMTDump) { EndAttributes(trace, indent, XMTDump); indent++; StartDescDump(trace, "commandStream" , indent, XMTDump); DumpBool(trace, "pixelMetric", dsi->pixelMetrics, indent, XMTDump); EndAttributes(trace, indent, XMTDump); } else { DumpBool(trace, "isCommandStream", 1, indent, XMTDump); DumpBool(trace, "pixelMetric", dsi->pixelMetrics, indent, XMTDump); } if (dsi->pixelWidth && dsi->pixelHeight) { if (XMTDump) { indent++; StartDescDump(trace, "size" , indent, XMTDump); } DumpInt(trace, "pixelWidth", dsi->pixelWidth, indent, XMTDump); DumpInt(trace, "pixelHeight", dsi->pixelHeight, indent, XMTDump); if (XMTDump) { EndSubElement(trace, indent, XMTDump); indent--; } } if (XMTDump) { EndDescDump(trace, "commandStream", indent, XMTDump); indent--; } indent--; EndDescDump(trace, (dsi->version==1) ? "BIFSConfig" : "BIFSv2Config", indent, XMTDump); return GF_OK;}GF_Err DumpRawBIFSConfig(GF_DefaultDescriptor *dsi, FILE *trace, u32 indent, Bool XMTDump, u32 oti){ GF_BitStream *bs; u32 flag; bs = gf_bs_new(dsi->data, dsi->dataLength, GF_BITSTREAM_READ); StartDescDump(trace, (oti==1) ? "BIFSConfig" : "BIFSv2Config", indent, XMTDump); indent++; if (oti==2) { DumpBool(trace, "use3DMeshCoding", gf_bs_read_int(bs, 1), indent, XMTDump); DumpBool(trace, "usePredictiveMFField", gf_bs_read_int(bs, 1), indent, XMTDump); } DumpInt(trace, "nodeIDbits", gf_bs_read_int(bs, 5), indent, XMTDump); DumpInt(trace, "routeIDbits", gf_bs_read_int(bs, 5), indent, XMTDump); if (oti==2) DumpInt(trace, "protoIDbits", gf_bs_read_int(bs, 5), indent, XMTDump); flag = gf_bs_read_int(bs, 1); if (!flag) { gf_bs_del(bs); return GF_NOT_SUPPORTED; } if (XMTDump) { EndAttributes(trace, indent, XMTDump); indent++; StartDescDump(trace, "commandStream" , indent, XMTDump); DumpBool(trace, "pixelMetric", gf_bs_read_int(bs, 1), indent, XMTDump); if (XMTDump) EndAttributes(trace, indent, XMTDump); } else { DumpBool(trace, "isCommandStream", 1, indent, XMTDump); DumpBool(trace, "pixelMetric", gf_bs_read_int(bs, 1), indent, XMTDump); } if (gf_bs_read_int(bs, 1)) { if (XMTDump) { indent++; StartDescDump(trace, "size" , indent, XMTDump); } DumpInt(trace, "pixelWidth", gf_bs_read_int(bs, 16), indent, XMTDump); DumpInt(trace, "pixelHeight", gf_bs_read_int(bs, 16), indent, XMTDump); if (XMTDump) { EndSubElement(trace, indent, XMTDump); indent--; } } if (XMTDump) { EndDescDump(trace, "commandStream", indent, XMTDump); indent--; } indent--; EndDescDump(trace, (oti==1) ? "BIFSConfig" : "BIFSv2Config", indent, XMTDump); gf_bs_del(bs); return GF_OK;}GF_Err gf_odf_dump_laser_cfg(GF_LASERConfig *dsi, FILE *trace, u32 indent, Bool XMTDump){ fprintf(trace, "<lsr:LASeRHeader profile=\"%s\" pointsCodec=\"%s\"", dsi->profile ? "mini" : "full", dsi->pointsCodec ? "Unknown" : "ExpGolombPointsCodec"); if (dsi->colorComponentBits) fprintf(trace, " colorComponentBits=\"%d\"", dsi->colorComponentBits); if (dsi->newSceneIndicator) fprintf(trace, " newSceneIndicator=\"true\""); if (dsi->coord_bits) fprintf(trace, " coordBits=\"%d\"", dsi->coord_bits); if (dsi->fullRequestHost) fprintf(trace, " useFullRequestHost=\"true\""); if (dsi->pathComponents) fprintf(trace, " pathComponents=\"%d\"", dsi->pathComponents); if (dsi->time_resolution && (dsi->time_resolution!=1000) ) fprintf(trace, " timeResolution=\"%d\"", dsi->time_resolution); if (dsi->resolution) fprintf(trace, " resolution=\"%d\"", dsi->resolution); if (dsi->scale_bits_minus_coord_bits) fprintf(trace, " scaleBits_minus_coordBits=\"%d\"", dsi->scale_bits_minus_coord_bits); fprintf(trace, "/>\n"); return GF_OK;}GF_Err gf_odf_dump_txtcfg(GF_TextConfig *desc, FILE *trace, u32 indent, Bool XMTDump){ u32 i, count; char ind_buf[OD_MAX_TREE]; StartDescDump(trace, "TextConfig", indent, XMTDump); indent++; DumpIntHex(trace, "3GPPBaseFormat", desc->Base3GPPFormat, indent, XMTDump, 1); DumpIntHex(trace, "MPEGExtendedFormat", desc->MPEGExtendedFormat, indent, XMTDump, 1); DumpIntHex(trace, "profileLevel", desc->profileLevel, indent, XMTDump, 1); DumpInt(trace, "durationClock", desc->timescale, indent, XMTDump); DumpInt(trace, "layer", desc->layer, indent, XMTDump); DumpInt(trace, "text_width", desc->text_width, indent, XMTDump); DumpInt(trace, "text_height", desc->text_height, indent, XMTDump); if (desc->video_width) DumpInt(trace, "video_width", desc->video_width, indent, XMTDump); if (desc->video_height) DumpInt(trace, "video_height", desc->video_height, indent, XMTDump); if (desc->horiz_offset) DumpInt(trace, "horizontal_offset", desc->horiz_offset, indent, XMTDump); if (desc->vert_offset) DumpInt(trace, "vertical_offset", desc->vert_offset, indent, XMTDump);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -