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

📄 ipmpx_dump.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 3 页
字号:
/* *			GPAC - Multimedia Framework C SDK * *			Copyright (c) Jean Le Feuvre 2000-2005  *					All rights reserved * *  This file is part of GPAC / MPEG-4 ObjectDescriptor sub-project * *  GPAC is free software; you can redistribute it and/or modify *  it under the terms of the GNU Lesser General Public License as published by *  the Free Software Foundation; either version 2, or (at your option) *  any later version. *    *  GPAC is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU Lesser General Public License for more details. *    *  You should have received a copy of the GNU Lesser General Public *  License along with this library; see the file COPYING.  If not, write to *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  * */#include <gpac/internal/odf_dev.h>#define GF_IPMPX_MAX_TREE		100#define GF_IPMPX_FORMAT_INDENT( ind_buf, indent ) \	{ \		u32 z;	\		assert(GF_IPMPX_MAX_TREE>indent);	\		for (z=0; z<indent; z++) ind_buf[z] = ' '; \		ind_buf[z] = 0; \	} \static void StartList(FILE *trace, const char *name, u32 indent, Bool XMTDump){	char ind_buf[GF_IPMPX_MAX_TREE];	GF_IPMPX_FORMAT_INDENT(ind_buf, indent);	if (XMTDump) {		fprintf(trace, "%s<%s>\n", ind_buf, name);	} else {		fprintf(trace, "%s%s [\n", ind_buf, name);	}}static void EndList(FILE *trace, const char *name, u32 indent, Bool XMTDump){	char ind_buf[GF_IPMPX_MAX_TREE];	GF_IPMPX_FORMAT_INDENT(ind_buf, indent);	if (XMTDump) {		fprintf(trace, "%s</%s>\n", ind_buf, name);	} else {		fprintf(trace, "%s]\n", ind_buf);	}}static void StartElement(FILE *trace, const char *descName, u32 indent, Bool XMTDump){	char ind_buf[GF_IPMPX_MAX_TREE];	GF_IPMPX_FORMAT_INDENT(ind_buf, indent);	fprintf(trace, "%s", ind_buf);	if (!XMTDump) {		fprintf(trace, "%s {\n", descName);	} else {		fprintf(trace, "<%s ", descName);	}}static void EndAttributes(FILE *trace, Bool XMTDump, Bool has_children){	if (XMTDump) {		if (has_children) {			fprintf(trace, ">\n");		} else {			fprintf(trace, "/>\n");		}	}}static void EndElement(FILE *trace, const char *descName, u32 indent, Bool XMTDump){	char ind_buf[GF_IPMPX_MAX_TREE];	GF_IPMPX_FORMAT_INDENT(ind_buf, indent);	fprintf(trace, "%s", ind_buf);	if (!XMTDump) {		fprintf(trace, "}\n");	} else {		fprintf(trace, "</%s>\n", descName);	}}static void StartAttribute(FILE *trace, const char *attName, u32 indent, Bool XMTDump){	char ind_buf[GF_IPMPX_MAX_TREE];	GF_IPMPX_FORMAT_INDENT(ind_buf, indent);	if (!XMTDump) {		fprintf(trace, "%s%s ", ind_buf, attName);	} else {		fprintf(trace, "%s=\"", attName);	}}static void EndAttribute(FILE *trace, u32 indent, Bool XMTDump){	if (!XMTDump) {		fprintf(trace, "\n");	} else {		fprintf(trace, "\" ");	}}static void DumpInt(FILE *trace, char *attName, u32  val, u32 indent, Bool XMTDump){	if (!val) return;	StartAttribute(trace, attName, indent, XMTDump);	fprintf(trace, "%d", val);	EndAttribute(trace, indent, XMTDump);}static void DumpLargeInt(FILE *trace, char *attName, u64  val, u32 indent, Bool XMTDump){	if (!val) return;	StartAttribute(trace, attName, indent, XMTDump);	fprintf(trace, LLD, val);	EndAttribute(trace, indent, XMTDump);}static void DumpBool(FILE *trace, char *attName, u32  val, u32 indent, Bool XMTDump){	if (!val) return;	StartAttribute(trace, attName, indent, XMTDump);	fprintf(trace, "%s", val ? "true" : "false");	EndAttribute(trace, indent, XMTDump);}static void DumpData(FILE *trace, const char *name, char *data, u32 dataLength, u32 indent, Bool XMTDump){	u32 i;	Bool ASCII_Dump;	if (!name && !data) return;	if (name) StartAttribute(trace, name, indent, XMTDump);	if (!XMTDump) fprintf(trace, "\"");	ASCII_Dump = 1;	for (i=0; i<dataLength; i++) {		if ((data[i]<32) || (data[i]>126)) {			ASCII_Dump = 0;			break;		}	}	if (!ASCII_Dump && XMTDump) fprintf(trace, "data:application/octet-string,");	for (i=0; i<dataLength; i++) {		if (ASCII_Dump) {			fprintf(trace, "%c", (unsigned char) data[i]);		} else {			fprintf(trace, "%%");			fprintf(trace, "%02X", (unsigned char) data[i]);		}	}	if (!XMTDump) fprintf(trace, "\"");	if (name) EndAttribute(trace, indent, XMTDump);}static void DumpData_16(FILE *trace, char *name, u16 *data, u16 dataLength, u32 indent, Bool XMTDump){	u32 i;	if (!name && !data) return;	if (name) StartAttribute(trace, name, indent, XMTDump);	if (!XMTDump) fprintf(trace, "\"");	for (i=0; i<dataLength; i++) {		if (XMTDump) {			fprintf(trace, "\'%d\'", data[i]);			if (i+1<dataLength) fprintf(trace, " ");		} else {			fprintf(trace, "%d", data[i]);			if (i+1<dataLength) fprintf(trace, ", ");		}	}	if (!XMTDump) fprintf(trace, "\"");	if (name) EndAttribute(trace, indent, XMTDump);}static void DumpBin128(FILE *trace, char *name, char *data, u32 indent, Bool XMTDump){	u32 i;	if (!name ||!data) return;	StartAttribute(trace, name, indent, XMTDump);	fprintf(trace, "0x");	i=0;	while (!data[i] && (i<16)) i++;	if (i==16) {		fprintf(trace, "00");	} else {		for (; i<16; i++) fprintf(trace, "%02X", (unsigned char) data[i]);	}	EndAttribute(trace, indent, XMTDump);}static void DumpDate(FILE *trace, char *name, char *data, u32 indent, Bool XMTDump){	u32 i;	if (!name ||!data) return;	StartAttribute(trace, name, indent, XMTDump);	fprintf(trace, "0x");	for (i=0; i<5; i++) fprintf(trace, "%02X", (unsigned char) data[i]);	EndAttribute(trace, indent, XMTDump);}void gf_ipmpx_dump_ByteArray(GF_IPMPX_ByteArray *_p, const char *attName, FILE *trace, u32 indent, Bool XMTDump){	if (_p && _p->data) {		if (XMTDump) {			StartElement(trace, attName ? attName : (char*)"ByteArray", indent, XMTDump);			indent++;			DumpData(trace, "array", _p->data, _p->length, indent, XMTDump);			indent--;			EndAttributes(trace, 1, 0);		} else {			DumpData(trace, attName ? attName : "ByteArray", _p->data, _p->length, indent, 0);		}	}}void gf_ipmpx_dump_AUTH(GF_IPMPX_Authentication *ipa, FILE *trace, u32 indent, Bool XMTDump){	switch (ipa->tag) {	case GF_IPMPX_AUTH_KeyDescr_Tag:	{		GF_IPMPX_AUTH_KeyDescriptor *p = (GF_IPMPX_AUTH_KeyDescriptor *)ipa;		StartElement(trace, "IPMP_KeyDescriptor", indent, XMTDump);		DumpData(trace, "keyBody", p->keyBody, p->keyBodyLength, indent+1, XMTDump);		if (XMTDump) EndAttributes(trace, 1, 0);		else EndElement(trace, "", indent, 0);	}		break;	case GF_IPMPX_AUTH_AlgorithmDescr_Tag:	{		GF_IPMPX_AUTH_AlgorithmDescriptor *p = (GF_IPMPX_AUTH_AlgorithmDescriptor *)ipa;		StartElement(trace, "IPMP_AlgorithmDescriptor", indent, XMTDump);		if (p->regAlgoID) {			DumpInt(trace, "regAlgoID", p->regAlgoID, indent+1, XMTDump);		} else {			gf_ipmpx_dump_ByteArray(p->specAlgoID, "specAlgoID", trace, indent+1, XMTDump);		}		EndAttributes(trace, XMTDump, 1);		if (p->OpaqueData) gf_ipmpx_dump_ByteArray(p->OpaqueData, "OpaqueData", trace, indent+1, XMTDump);		EndElement(trace, "IPMP_AlgorithmDescriptor", indent, XMTDump);	}		break;	}}void gf_ipmpx_dump_BaseData(GF_IPMPX_Data *_p, FILE *trace, u32 indent, Bool XMTDump){#if 0	if (XMTDump) {		StartElement(trace, "IPMP_BaseData", indent, XMTDump);		DumpInt(trace, "dataID", _p->dataID, indent, 1);		DumpInt(trace, "Version", _p->Version, indent, 1);		EndLeafAttribute(trace, indent, XMTDump);	} else {		DumpInt(trace, "dataID", _p->dataID, indent, 0);		DumpInt(trace, "Version", _p->Version, indent, 0);	}#endif}GF_Err gf_ipmpx_dump_OpaqueData(GF_IPMPX_Data *_p, FILE *trace, u32 indent, Bool XMTDump){	GF_IPMPX_OpaqueData *p = (GF_IPMPX_OpaqueData *)_p;	StartElement(trace, (p->tag==GF_IPMPX_RIGHTS_DATA_TAG) ? "IPMP_RightsData" : "IPMP_OpaqueData", indent, XMTDump);	indent++;	EndAttributes(trace, XMTDump, 1);	gf_ipmpx_dump_BaseData(_p, trace, indent, XMTDump);	gf_ipmpx_dump_ByteArray(p->opaqueData, (p->tag==GF_IPMPX_RIGHTS_DATA_TAG) ? "rightsInfo" : "opaqueData", trace, indent, XMTDump);	indent--;	EndElement(trace, (p->tag==GF_IPMPX_RIGHTS_DATA_TAG) ? "IPMP_RightsData" : "IPMP_OpaqueData", indent, XMTDump);	return GF_OK;}GF_Err gf_ipmpx_dump_KeyData(GF_IPMPX_Data *_p, FILE *trace, u32 indent, Bool XMTDump){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -