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

📄 box_dump.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 5 页
字号:
	return GF_OK;}GF_Err mdhd_dump(GF_Box *a, FILE * trace){	GF_MediaHeaderBox *p;		p = (GF_MediaHeaderBox *)a;	fprintf(trace, "<MediaHeaderBox ");	fprintf(trace, "CreationTime=\""LLD"\" ", LLD_CAST p->creationTime);	fprintf(trace, "ModificationTime=\""LLD"\" ", LLD_CAST p->modificationTime);	fprintf(trace, "TimeScale=\"%d\" ", p->timeScale);	fprintf(trace, "Duration=\""LLD"\" ", LLD_CAST p->duration);	fprintf(trace, "LanguageCode=\"%c%c%c\">\n", p->packedLanguage[0], p->packedLanguage[1], p->packedLanguage[2]);	DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</MediaHeaderBox>\n");	return GF_OK;}GF_Err vmhd_dump(GF_Box *a, FILE * trace){	fprintf(trace, "<VideoMediaHeaderBox>\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</VideoMediaHeaderBox>\n");	return GF_OK;}GF_Err smhd_dump(GF_Box *a, FILE * trace){	fprintf(trace, "<SoundMediaHeaderBox>\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</SoundMediaHeaderBox>\n");	return GF_OK;}GF_Err hmhd_dump(GF_Box *a, FILE * trace){	GF_HintMediaHeaderBox *p;	p = (GF_HintMediaHeaderBox *)a;	fprintf(trace, "<HintMediaHeaderBox ");	fprintf(trace, "MaximumPDUSize=\"%d\" ", p->maxPDUSize);	fprintf(trace, "AveragePDUSize=\"%d\" ", p->avgPDUSize);	fprintf(trace, "MaxBitRate=\"%d\" ", p->maxBitrate);	fprintf(trace, "AverageBitRate=\"%d\">\n", p->avgBitrate);		DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</HintMediaHeaderBox>\n");	return GF_OK;}GF_Err nmhd_dump(GF_Box *a, FILE * trace){	fprintf(trace, "<MPEGMediaHeaderBox>\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</MPEGMediaHeaderBox>\n");	return GF_OK;}GF_Err stbl_dump(GF_Box *a, FILE * trace){	GF_SampleTableBox *p;	p = (GF_SampleTableBox *)a;	fprintf(trace, "<SampleTableBox>\n");	DumpBox(a, trace);	gf_box_dump(p->SampleDescription, trace);	gf_box_dump(p->TimeToSample, trace);	if (p->CompositionOffset) gf_box_dump(p->CompositionOffset, trace);	if (p->SyncSample) gf_box_dump(p->SyncSample, trace);	if (p->ShadowSync) gf_box_dump(p->ShadowSync, trace);	gf_box_dump(p->SampleToChunk, trace);	gf_box_dump(p->SampleSize, trace);	gf_box_dump(p->ChunkOffset, trace);	if (p->DegradationPriority) gf_box_dump(p->DegradationPriority, trace);	if (p->SampleDep) gf_box_dump(p->SampleDep, trace);	if (p->PaddingBits) gf_box_dump(p->PaddingBits, trace);	if (p->Fragments) gf_box_dump(p->Fragments, trace);	fprintf(trace, "</SampleTableBox>\n");	return GF_OK;}GF_Err dinf_dump(GF_Box *a, FILE * trace){	GF_DataInformationBox *p;	p = (GF_DataInformationBox *)a;	fprintf(trace, "<DataInformationBox>");	DumpBox(a, trace);	gf_box_dump(p->dref, trace);	fprintf(trace, "</DataInformationBox>\n");	return GF_OK;}GF_Err url_dump(GF_Box *a, FILE * trace){	GF_DataEntryURLBox *p;	p = (GF_DataEntryURLBox *)a;	fprintf(trace, "<URLDataEntryBox");	if (p->location) {		fprintf(trace, " URL=\"%s\">\n", p->location);	} else {		fprintf(trace, ">\n");		if (! (p->flags & 1) ) {			fprintf(trace, "<!--ERROR: No location indicated-->\n");		} else {			fprintf(trace, "<!--Data is contained in the movie file-->\n");		}	}		DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</URLDataEntryBox>\n");	return GF_OK;}GF_Err urn_dump(GF_Box *a, FILE * trace){	GF_DataEntryURNBox *p;	p = (GF_DataEntryURNBox *)a;	fprintf(trace, "<URNDataEntryBox");	if (p->nameURN) fprintf(trace, " URN=\"%s\"", p->nameURN);	if (p->location) fprintf(trace, " URL=\"%s\"", p->location);	fprintf(trace, ">\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</URNDataEntryBox>\n");	return GF_OK;}GF_Err cprt_dump(GF_Box *a, FILE * trace){	GF_CopyrightBox *p;	p = (GF_CopyrightBox *)a;	fprintf(trace, "<CopyrightBox LanguageCode=\"%s\" CopyrightNotice=\"%s\">\n", p->packedLanguageCode, p->notice);	DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</CopyrightBox>\n");	return GF_OK;}static char *format_duration(u64 dur, u32 timescale, char *szDur){	u32 h, m, s, ms;	dur = (u32) (( ((Double) (s64) dur)/timescale)*1000);	h = (u32) (dur / 3600000);	dur -= h*3600000;	m = (u32) (dur / 60000);	dur -= m*60000;	s = (u32) (dur/1000);	dur -= s*1000;	ms = (u32) (dur);	sprintf(szDur, "%02d:%02d:%02d.%03d", h, m, s, ms);	return szDur;}GF_Err chpl_dump(GF_Box *a, FILE * trace){	u32 i, count;	char szDur[20];	GF_ChapterListBox *p = (GF_ChapterListBox *)a;	fprintf(trace, "<ChapterListBox>\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	count = gf_list_count(p->list);	for (i=0; i<count; i++) {		GF_ChapterEntry *ce = (GF_ChapterEntry *)gf_list_get(p->list, i);		fprintf(trace, "<Chapter name=\"%s\" startTime=\"%s\" />\n", ce->name, format_duration(ce->start_time, 1000*10000, szDur));	}	fprintf(trace, "</ChapterListBox>\n");	return GF_OK;}GF_Err dpin_dump(GF_Box *a, FILE * trace){	u32 i;	GF_ProgressiveDownloadBox *p = (GF_ProgressiveDownloadBox *)a;	fprintf(trace, "<ProgressiveDownloadBox>\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	for (i=0; i<p->count; i++) {		fprintf(trace, "<DownloadInfo rate=\"%d\" estimatedTime=\"%d\" />\n", p->rates[i], p->times[i]);	}	fprintf(trace, "</ProgressiveDownloadBox>\n");	return GF_OK;}GF_Err hdlr_dump(GF_Box *a, FILE * trace){	GF_HandlerBox *p = (GF_HandlerBox *)a;	if (p->nameUTF8 && (u32) p->nameUTF8[0] == strlen(p->nameUTF8+1)) {		fprintf(trace, "<HandlerBox Type=\"%s\" Name=\"%s\" ", gf_4cc_to_str(p->handlerType), p->nameUTF8+1);	} else {		fprintf(trace, "<HandlerBox Type=\"%s\" Name=\"%s\" ", gf_4cc_to_str(p->handlerType), p->nameUTF8);	}	fprintf(trace, "reserved1=\"%d\" reserved2=\"", p->reserved1);	DumpData(trace, p->reserved2, 12);	fprintf(trace, "\"");	fprintf(trace, ">\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	fprintf(trace, "</HandlerBox>\n");	return GF_OK;}GF_Err iods_dump(GF_Box *a, FILE * trace){	GF_ObjectDescriptorBox *p;	p = (GF_ObjectDescriptorBox *)a;	fprintf(trace, "<ObjectDescriptorBox>\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	if (p->descriptor) {		gf_odf_dump_desc(p->descriptor, trace, 1, 1);	} else {		fprintf(trace, "<!--WARNING: Object Descriptor not present-->\n");	}	fprintf(trace, "</ObjectDescriptorBox>\n");	return GF_OK;}GF_Err trak_dump(GF_Box *a, FILE * trace){	GF_TrackBox *p;	p = (GF_TrackBox *)a;	fprintf(trace, "<TrackBox>\n");	DumpBox(a, trace);	if (p->Header) {		gf_box_dump(p->Header, trace);	} else {		fprintf(trace, "<!--INVALID FILE: Missing Track Header-->\n");	}	if (p->References) gf_box_dump(p->References, trace);	if (p->meta) gf_box_dump(p->meta, trace);	if (p->editBox) gf_box_dump(p->editBox, trace);	if (p->Media) gf_box_dump(p->Media, trace);	if (p->udta) gf_box_dump(p->udta, trace);		gf_box_array_dump(p->boxes, trace);	fprintf(trace, "</TrackBox>\n");	return GF_OK;}GF_Err mp4s_dump(GF_Box *a, FILE * trace){	GF_MPEGSampleEntryBox *p;	p = (GF_MPEGSampleEntryBox *)a;	fprintf(trace, "<MPEGSystemsSampleDescriptionBox DataReferenceIndex=\"%d\">\n", p->dataReferenceIndex);	DumpBox(a, trace);	if (p->esd) {		gf_box_dump(p->esd, trace);	} else {		fprintf(trace, "<!--INVALID MP4 FILE: ESDBox not present in MPEG Sample Description or corrupted-->\n");	}	if (a->type == GF_ISOM_BOX_TYPE_ENCS) {		gf_box_dump(p->protection_info, trace);	}	fprintf(trace, "</MPEGSystemsSampleDescriptionBox>\n");	return GF_OK;}void base_visual_entry_dump(GF_VisualSampleEntryBox *p, FILE * trace){	fprintf(trace, " DataReferenceIndex=\"%d\" Width=\"%d\" Height=\"%d\"", p->dataReferenceIndex, p->Width, p->Height);	//dump reserved info	fprintf(trace, " XDPI=\"%d\" YDPI=\"%d\" BitDepth=\"%d\"", p->horiz_res, p->vert_res, p->bit_depth);	if (strlen((const char*)p->compressor_name) )		fprintf(trace, " CompressorName=\"%s\"\n", p->compressor_name);}GF_Err mp4v_dump(GF_Box *a, FILE * trace){	GF_MPEGVisualSampleEntryBox *p = (GF_MPEGVisualSampleEntryBox *)a;	const char *name = p->avc_config ? "AVCSampleEntryBox" : "MPEGVisualSampleDescriptionBox";	fprintf(trace, "<%s", name);	base_visual_entry_dump((GF_VisualSampleEntryBox *)p, trace);	fprintf(trace, ">\n");	if (p->esd) {		gf_box_dump(p->esd, trace);	} else if (p->avc_config) {		if (p->avc_config) gf_box_dump(p->avc_config, trace);		if (p->ipod_ext) gf_box_dump(p->ipod_ext, trace);		if (p->descr) gf_box_dump(p->descr, trace);		if (p->bitrate) gf_box_dump(p->bitrate, trace);	} else {		fprintf(trace, "<!--INVALID MP4 FILE: ESDBox not present in MPEG Sample Description or corrupted-->\n");	}	if (a->type == GF_ISOM_BOX_TYPE_ENCV) {		gf_box_dump(p->protection_info, trace);	}	DumpBox(a, trace);	fprintf(trace, "</%s>\n", name);	return GF_OK;}void base_audio_entry_dump(GF_AudioSampleEntryBox *p, FILE * trace){	fprintf(trace, " DataReferenceIndex=\"%d\" SampleRate=\"%d\"", p->dataReferenceIndex, p->samplerate_hi);	fprintf(trace, " Channels=\"%d\" BitsPerSample=\"%d\"", p->channel_count, p->bitspersample);}GF_Err mp4a_dump(GF_Box *a, FILE * trace){	GF_MPEGAudioSampleEntryBox *p;	p = (GF_MPEGAudioSampleEntryBox *)a;	fprintf(trace, "<MPEGAudioSampleDescriptionBox");	base_audio_entry_dump((GF_AudioSampleEntryBox *)p, trace);	fprintf(trace, ">\n");	DumpBox(a, trace);	if (p->esd) {		gf_box_dump(p->esd, trace);	} else {		fprintf(trace, "<!--INVALID MP4 FILE: ESDBox not present in MPEG Sample Description or corrupted-->\n");	}	if (a->type == GF_ISOM_BOX_TYPE_ENCA) {		gf_box_dump(p->protection_info, trace);	}	fprintf(trace, "</MPEGAudioSampleDescriptionBox>\n");	return GF_OK;}GF_Err gnrm_dump(GF_Box *a, FILE * trace){	GF_GenericSampleEntryBox *p = (GF_GenericSampleEntryBox *)a;	fprintf(trace, "<SampleDescriptionBox DataReferenceIndex=\"%d\" ExtensionDataSize=\"%d\">\n", p->dataReferenceIndex, p->data_size);	a->type = p->EntryType;	DumpBox(a, trace);	a->type = GF_ISOM_BOX_TYPE_GNRM;	fprintf(trace, "</SampleDescriptionBox>\n");	return GF_OK;}GF_Err gnrv_dump(GF_Box *a, FILE * trace){	GF_GenericVisualSampleEntryBox *p = (GF_GenericVisualSampleEntryBox *)a;	fprintf(trace, "<VisualSampleDescriptionBox DataReferenceIndex=\"%d\" Version=\"%d\" Revision=\"%d\" Vendor=\"%d\" TemporalQuality=\"%d\" SpacialQuality=\"%d\" Width=\"%d\" Height=\"%d\" HorizontalResolution=\"%d\" VerticalResolution=\"%d\" CompressorName=\"%s\" BitDepth=\"%d\">\n", 		p->dataReferenceIndex, p->version, p->revision, p->vendor, p->temporal_quality, p->spacial_quality, p->Width, p->Height, p->horiz_res, p->vert_res, p->compressor_name, p->bit_depth);	a->type = p->EntryType;	DumpBox(a, trace);	a->type = GF_ISOM_BOX_TYPE_GNRV;	fprintf(trace, "</VisualSampleDescriptionBox>\n");	return GF_OK;}GF_Err gnra_dump(GF_Box *a, FILE * trace){	GF_GenericAudioSampleEntryBox *p = (GF_GenericAudioSampleEntryBox *)a;	fprintf(trace, "<AudioSampleDescriptionBox DataReferenceIndex=\"%d\" Version=\"%d\" Revision=\"%d\" Vendor=\"%d\" ChannelCount=\"%d\" BitsPerSample=\"%d\" Samplerate=\"%d\">\n", 		p->dataReferenceIndex, p->version, p->revision, p->vendor, p->channel_count, p->bitspersample, p->samplerate_hi);	a->type = p->EntryType;	DumpBox(a, trace);	a->type = GF_ISOM_BOX_TYPE_GNRA;	fprintf(trace, "</AudioSampleDescriptionBox>\n");	return GF_OK;}GF_Err edts_dump(GF_Box *a, FILE * trace){	GF_EditBox *p;	p = (GF_EditBox *)a;	fprintf(trace, "<EditBox>\n");	DumpBox(a, trace);	gf_box_dump(p->editList, trace);	fprintf(trace, "</EditBox>\n");	return GF_OK;}GF_Err udta_dump(GF_Box *a, FILE * trace){	GF_UserDataBox *p;	GF_UserDataMap *map;	u32 i;	p = (GF_UserDataBox *)a;	fprintf(trace, "<UserDataBox>\n");	DumpBox(a, trace);	i=0;	while ((map = (GF_UserDataMap *)gf_list_enum(p->recordList, &i))) {		fprintf(trace, "<UDTARecord Type=\"%s\">\n", gf_4cc_to_str(map->boxType));		gf_box_array_dump(map->boxList, trace);		fprintf(trace, "</UDTARecord>\n");	}	fprintf(trace, "</UserDataBox>\n");	return GF_OK;}GF_Err dref_dump(GF_Box *a, FILE * trace){	GF_DataReferenceBox *p;	p = (GF_DataReferenceBox *)a;	fprintf(trace, "<DataReferenceBox>\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	gf_box_array_dump(p->boxList, trace);	fprintf(trace, "</DataReferenceBox>\n");	return GF_OK;}GF_Err stsd_dump(GF_Box *a, FILE * trace){	GF_SampleDescriptionBox *p;	p = (GF_SampleDescriptionBox *)a;	fprintf(trace, "<SampleDescriptionBox>\n");	DumpBox(a, trace);	gf_full_box_dump(a, trace);	gf_box_array_dump(p->boxList, trace);	fprintf(trace, "</SampleDescriptionBox>\n");

⌨️ 快捷键说明

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