⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 odf_dump.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -