📄 odf_dump.c
字号:
StartElement(trace, "SampleDescriptions", indent, XMTDump, 1); indent++; OD_FORMAT_INDENT(ind_buf, indent); count = gf_list_count(desc->sample_descriptions); for (i=0; i<count; i++) { char szStyles[1024]; u32 j; GF_TextSampleDescriptor *sd = (GF_TextSampleDescriptor *)gf_list_get(desc->sample_descriptions, i); if (!XMTDump) fprintf(trace, "%s", ind_buf); StartDescDump(trace, "TextSampleDescriptor", indent, XMTDump); indent++; DumpIntHex(trace, "displayFlags", sd->displayFlags, indent, XMTDump, 0); DumpInt(trace, "horiz_justif", sd->horiz_justif, indent, XMTDump); DumpInt(trace, "vert_justif", sd->vert_justif, indent, XMTDump); DumpIntHex(trace, "back_color", sd->back_color, indent, XMTDump, 0); DumpInt(trace, "top", sd->default_pos.top, indent, XMTDump); DumpInt(trace, "bottom", sd->default_pos.bottom, indent, XMTDump); DumpInt(trace, "left", sd->default_pos.left, indent, XMTDump); DumpInt(trace, "right", sd->default_pos.right, indent, XMTDump); DumpInt(trace, "style_font_ID", sd->default_style.fontID, indent, XMTDump); DumpInt(trace, "style_font_size", sd->default_style.font_size, indent, XMTDump); DumpIntHex(trace, "style_text_color", sd->default_style.text_color, indent, XMTDump, 0); strcpy(szStyles, ""); if (sd->default_style.style_flags & GF_TXT_STYLE_BOLD) strcat(szStyles, "bold "); if (sd->default_style.style_flags & GF_TXT_STYLE_ITALIC) strcat(szStyles, "italic "); if (sd->default_style.style_flags & GF_TXT_STYLE_UNDERLINED) strcat(szStyles, "underlined "); if (strlen(szStyles)) DumpString(trace, "style_flag", szStyles, indent, XMTDump); for (j=0; j<sd->font_count; j++) { DumpInt(trace, "fontID", sd->fonts[j].fontID, indent, XMTDump); DumpString(trace, "fontName", sd->fonts[i].fontName, indent, XMTDump); } indent--; EndDescDump(trace, "TextSampleDescriptor", indent, XMTDump); } indent--; EndElement(trace, "SampleDescriptions", indent, XMTDump, 1); indent--; EndDescDump(trace, "TextConfig", indent, XMTDump); return GF_OK;}GF_Err DumpRawTextConfig(GF_DefaultDescriptor *dsi, FILE *trace, u32 indent, Bool XMTDump, u32 oti){ GF_TextConfig *cfg = (GF_TextConfig *) gf_odf_desc_new(GF_ODF_TEXT_CFG_TAG); GF_Err e = gf_odf_get_text_config(dsi, (u8) oti, cfg); if (!e) gf_odf_dump_desc(cfg, trace, indent, XMTDump); gf_odf_desc_del((GF_Descriptor *) cfg); return e;}GF_Err gf_odf_dump_ui_cfg(GF_UIConfig *uid, FILE *trace, u32 indent, Bool XMTDump){ char devName[255]; u32 i; StartDescDump(trace, "UIConfig" , indent, XMTDump); indent++; DumpString(trace, "deviceName", uid->deviceName, indent, XMTDump); if (!stricmp(devName, "StringSensor") && uid->termChar) { devName[0] = uid->termChar; devName[1] = 0; DumpString(trace, "termChar", devName, indent, XMTDump); devName[0] = uid->delChar; DumpString(trace, "delChar", devName, indent, XMTDump); } if (uid->ui_data_length) { if (!stricmp(uid->deviceName, "HTKSensor")) { u32 nb_word, nbPhone, c, j; GF_BitStream *bs = gf_bs_new(uid->ui_data, uid->ui_data_length, GF_BITSTREAM_READ); char szPh[3]; StartAttribute(trace, "uiData", indent, XMTDump); if (!XMTDump) fprintf(trace, "\""); fprintf(trace, "HTK:"); szPh[2] = 0; nb_word = gf_bs_read_int(bs, 8); for (i=0; i<nb_word; i++) { nbPhone = gf_bs_read_int(bs, 8); if (i) fprintf(trace, ";"); while ((c=gf_bs_read_int(bs, 8))) fprintf(trace, "%c", c); fprintf(trace, " "); for (j=0; j<nbPhone; j++) { gf_bs_read_data(bs, szPh, 2); if (j) fprintf(trace, " "); if (!stricmp(szPh, "vc")) fprintf(trace, "vcl"); else fprintf(trace, "%s", szPh); } } if (!XMTDump) fprintf(trace, "\""); EndAttribute(trace, indent, XMTDump); gf_bs_del(bs); } else { DumpData(trace, "uiData", uid->ui_data, uid->ui_data_length, indent, XMTDump); } } indent--; EndAttributes(trace, indent, XMTDump); EndDescDump(trace, "UIConfig", indent, XMTDump); return GF_OK;}GF_Err DumpRawUIConfig(GF_DefaultDescriptor *dsi, FILE *trace, u32 indent, Bool XMTDump, u32 oti){ char devName[255]; u32 i, len; GF_BitStream *bs; bs = gf_bs_new(dsi->data, dsi->dataLength, GF_BITSTREAM_READ); StartDescDump(trace, "UIConfig" , indent, XMTDump); indent++; len = gf_bs_read_int(bs, 8); for (i=0; i<len; i++) devName[i] = gf_bs_read_int(bs, 8); devName[i] = 0; DumpString(trace, "deviceName", devName, indent, XMTDump); if (!stricmp(devName, "StringSensor") && gf_bs_available(bs)) { devName[0] = gf_bs_read_int(bs, 8); devName[1] = 0; DumpString(trace, "termChar", devName, indent, XMTDump); devName[0] = gf_bs_read_int(bs, 8); DumpString(trace, "delChar", devName, indent, XMTDump); } len = (u32) gf_bs_available(bs); if (len) { if (!stricmp(devName, "HTKSensor")) { u32 nb_word, nbPhone, c, j; char szPh[3]; StartAttribute(trace, "uiData", indent, XMTDump); if (!XMTDump) fprintf(trace, "\""); fprintf(trace, "HTK:"); szPh[2] = 0; nb_word = gf_bs_read_int(bs, 8); for (i=0; i<nb_word; i++) { nbPhone = gf_bs_read_int(bs, 8); if (i) fprintf(trace, ";"); while ((c=gf_bs_read_int(bs, 8))) fprintf(trace, "%c", c); fprintf(trace, " "); for (j=0; j<nbPhone; j++) { gf_bs_read_data(bs, szPh, 2); if (j) fprintf(trace, " "); if (!stricmp(szPh, "vc")) fprintf(trace, "vcl"); else fprintf(trace, "%s", szPh); } } if (!XMTDump) fprintf(trace, "\""); EndAttribute(trace, indent, XMTDump); } else { char *data = dsi->data; data += (u32) gf_bs_get_position(bs); DumpData(trace, "uiData", data, len, indent, XMTDump); } } indent--; EndAttributes(trace, indent, XMTDump); EndDescDump(trace, "UIConfig", indent, XMTDump); gf_bs_del(bs); return GF_OK;}GF_Err OD_DumpDSI(GF_DefaultDescriptor *dsi, FILE *trace, u32 indent, Bool XMTDump, u32 streamType, u32 oti){ switch (streamType) { case GF_STREAM_SCENE: if (oti<=2) return DumpRawBIFSConfig(dsi, trace, indent, XMTDump, oti); break; case GF_STREAM_INTERACT: return DumpRawUIConfig(dsi, trace, indent, XMTDump, oti); case GF_STREAM_TEXT: if (oti==0x08) return DumpRawTextConfig(dsi, trace, indent, XMTDump, oti); break; default: break; } return gf_odf_dump_desc(dsi, trace, indent, XMTDump);}GF_Err gf_odf_dump_dcd(GF_DecoderConfig *dcd, FILE *trace, u32 indent, Bool XMTDump){ StartDescDump(trace, "DecoderConfigDescriptor", indent, XMTDump); indent++; DumpInt(trace, "objectTypeIndication", dcd->objectTypeIndication, indent, XMTDump); DumpInt(trace, "streamType", dcd->streamType, indent, XMTDump); DumpInt(trace, "upStream", dcd->upstream, indent, XMTDump); DumpInt(trace, "bufferSizeDB", dcd->bufferSizeDB, indent, XMTDump); DumpInt(trace, "maxBitrate", dcd->maxBitrate, indent, XMTDump); DumpInt(trace, "avgBitrate", dcd->avgBitrate, indent, XMTDump); EndAttributes(trace, indent, XMTDump); if (dcd->decoderSpecificInfo) { if (dcd->decoderSpecificInfo->tag==GF_ODF_DSI_TAG) { if (dcd->decoderSpecificInfo->dataLength) { StartElement(trace, "decSpecificInfo" , indent, XMTDump, 0); OD_DumpDSI(dcd->decoderSpecificInfo, trace, indent + (XMTDump ? 1 : 0), XMTDump, dcd->streamType, dcd->objectTypeIndication); EndElement(trace, "decSpecificInfo" , indent, XMTDump, 0); } } else { StartElement(trace, "decSpecificInfo" , indent, XMTDump, 0); gf_odf_dump_desc(dcd->decoderSpecificInfo, trace, indent + (XMTDump ? 1 : 0), XMTDump); EndElement(trace, "decSpecificInfo" , indent, XMTDump, 0); } } DumpDescList(dcd->profileLevelIndicationIndexDescriptor, trace, indent, "profileLevelIndicationIndexDescr", XMTDump, 0); indent--; EndDescDump(trace, "DecoderConfigDescriptor", indent, XMTDump); return GF_OK;}GF_Err gf_odf_dump_slc(GF_SLConfig *sl, FILE *trace, u32 indent, Bool XMTDump){ StartDescDump(trace, "SLConfigDescriptor", indent, XMTDump); EndAttributes(trace, indent, XMTDump); indent++; if (sl->predefined) { StartSubElement(trace, "predefined" , indent, XMTDump); DumpInt(trace, XMTDump ? "value" : "predefined", sl->predefined, indent, XMTDump); EndSubElement(trace, indent, XMTDump); } if (XMTDump) StartSubElement(trace, "custom" , indent, XMTDump); if (!sl->predefined) { DumpBool(trace, "useAccessUnitStartFlag", sl->useAccessUnitStartFlag, indent, XMTDump); DumpBool(trace, "useAccessUnitEndFlag", sl->useAccessUnitEndFlag, indent, XMTDump); DumpBool(trace, "useRandomAccessPointFlag", sl->useRandomAccessPointFlag, indent, XMTDump); DumpBool(trace, "usePaddingFlag", sl->usePaddingFlag, indent, XMTDump); if (!XMTDump) DumpBool(trace, "useTimeStampsFlag", sl->useTimestampsFlag, indent, XMTDump); DumpBool(trace, "useIdleFlag", sl->useIdleFlag, indent, XMTDump); if (!XMTDump) DumpBool(trace, "durationFlag", sl->durationFlag, indent, XMTDump); DumpInt(trace, "timeStampResolution", sl->timestampResolution, indent, XMTDump); DumpInt(trace, "OCRResolution", sl->OCRResolution, indent, XMTDump); DumpInt(trace, "timeStampLength", sl->timestampLength, indent, XMTDump); DumpInt(trace, "OCRLength", sl->OCRLength, indent, XMTDump); DumpInt(trace, "AU_Length", sl->AULength, indent, XMTDump); DumpInt(trace, "instantBitrateLength", sl->instantBitrateLength, indent, XMTDump); DumpInt(trace, "degradationPriorityLength", sl->degradationPriorityLength, indent, XMTDump); DumpInt(trace, "AU_SeqNumLength", sl->AUSeqNumLength, indent, XMTDump); DumpInt(trace, "packetSeqNumLength", sl->packetSeqNumLength, indent, XMTDump); } EndAttributes(trace, indent, XMTDump); indent++; if (sl->durationFlag) { StartSubElement(trace, "Duration" , indent, XMTDump); DumpInt(trace, "timescale", sl->timeScale, indent, XMTDump); DumpInt(trace, "accessUnitDuration", sl->AUDuration, indent, XMTDump); DumpInt(trace, "compositionUnitDuration", sl->CUDuration, indent, XMTDump); EndSubElement(trace, indent, XMTDump); } if (! sl->useTimestampsFlag) { StartSubElement(trace, "noUseTimeStamps" , indent, XMTDump); DumpInt(trace, "startDecodingTimeStamp", (u32) sl->startDTS, indent, XMTDump); DumpInt(trace, "startCompositionTimeStamp", (u32) sl->startCTS, indent, XMTDump); EndSubElement(trace, indent, XMTDump); } indent--; if (XMTDump) EndElement(trace, "custom" , indent, XMTDump, 1); indent--; EndDescDump(trace, "SLConfigDescriptor", indent, XMTDump); return GF_OK;}GF_Err gf_odf_dump_cc(GF_CCDescriptor *ccd, FILE *trace, u32 indent, Bool XMTDump){ StartDescDump(trace, "ContentClassificationDescriptor", indent, XMTDump); DumpInt(trace, "classificationEntity", ccd->classificationEntity, indent, XMTDump); DumpInt(trace, "classificationTable", ccd->classificationTable, indent, XMTDump); DumpData(trace, "ccd->contentClassificationData", ccd->contentClassificationData, ccd->dataLength, indent, XMTDump); EndAttributes(trace, indent, XMTDump); EndDescDump(trace, "ContentClassificationDescriptor", indent, XMTDump); return GF_OK;}GF_Err gf_odf_dump_cc_date(GF_CC_Date *cdd, FILE *trace, u32 indent, Bool XMTDump){ StartDescDump(trace, "ContentClassificationDescriptor", indent, XMTDump); DumpString(trace, "creationDate", cdd->contentCreationDate, indent, XMTDump); EndAttributes(trace, indent, XMTDump); EndDescDump(trace, "ContentClassificationDescriptor", indent, XMTDump); return GF_OK;}GF_Err gf_odf_dump_cc_name(GF_CC_Name *cnd, FILE *trace, u32 indent, Bool XMTDump){ u32 i; GF_ContentCreatorInfo *p; StartDescDump(trace, "ContentCreatorNameDescriptor", indent, XMTDump); EndAttributes(trace, indent, XMTDump); indent++; i=0; while ((p = (GF_ContentCreatorInfo *)gf_list_enum(cnd->ContentCreators, &i))) { StartSubElement(trace, "Creator", indent, XMTDump); DumpInt(trace, "languageCode", p->langCode, indent, XMTDump); DumpBool(trace, "isUTF8", p->isUTF8, indent, XMTDump); DumpString(trace, "Name", p->contentCreatorName, indent, XMTDump); EndSubElement(trace, indent, XMTDump); } indent--; EndDescDump(trace, "ContentCreatorNameDescriptor", indent, XMTDump); return GF_OK;}GF_Err gf_odf_dump_ci(GF_CIDesc *cid, FILE *trace, u32 indent, Bool XMTDump){ StartDescDump(trace, "ContentIdentificationDescriptor", indent, XMTDump); DumpBool(trace, "protectedContent", cid->protectedContent, indent, XMTDump); EndAttributes(trace, indent, XMTDump); indent++; if (cid->contentTypeFlag) { StartSubElement(trace, "contentType", indent, XMTDump); DumpInt(trace, "contentType", cid->contentType, indent, XMTDump); EndSubElement(trace, indent, XMTDump); } if (cid->contentIdentifierFlag) { StartSubElement(trace, "contentIdentifierType", indent, XMTDump); DumpInt(trace, "contentIdentifierType", cid->contentIdentifierType, indent, XMTDump); DumpString(trace, "contentIdentifier", cid->contentIdentifier, indent, XMTDump); EndSubElement(trace, indent, XMTDump); } indent--; EndDescDump(trace, "ContentIdentificationDescriptor", indent, XMTDump); return GF_OK;}GF_Err gf_odf_dump_default(GF_DefaultDescriptor *dd, FILE *trace, u32 indent, Bool XMTDump){ if (dd->tag == GF_ODF_DSI_TAG) { StartDescDump(trace, "DecoderSpecificInfo", indent, XMTDump); indent++; if (XMTDump) { DumpString(trace, "type", "auto", indent, XMTDump); DumpData(trace, "src", dd->data, dd->dataLength, indent, XMTDump); } else { DumpData(trace, "info", dd->data, dd->dataLength, indent, XMTDump); } indent--; if (XMTDump) { EndSubElement(trace, indent, 1); } else { EndDescDump(trace, "", indent, 0); } } else { StartDescDump(trace, "DefaultDescriptor", indent, XMTDump); indent++; DumpData(trace, "data", dd->data, dd->dataLength, indent, XMTDump); indent--; EndSubElement(trace, indent, XMTDump); } return GF_OK;}GF_Err gf_odf_dump_esd_inc(GF_ES_ID_Inc *esd_inc, FILE *trace, u32 indent, Bool XMTDump){ StartDescDump(trace, "ES_ID_Inc", indent, XMTDump); indent++; DumpInt(trace, "trackID", esd_inc->trackID, indent, XMTDump); indent--; EndAttributes(trace, indent, XMTDump); EndDescDump(trace, "ES_ID_Inc", indent, XMTDump); return GF_OK;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -