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

📄 main.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 5 页
字号:
			open_edit = 1;		}		else if (!stricmp(arg, "-set-kms")) {			char szTK[20], *ext;			CHECK_NEXT_ARG			if (nb_track_act>=MAX_CUMUL_OPS) {				fprintf(stdout, "Sorry - no more than %d track operations allowed\n", MAX_CUMUL_OPS);				return 1;			}			strncpy(szTK, argv[i+1], 19);			ext = strchr(szTK, '=');			tracks[nb_track_act].act_type = 3;			tracks[nb_track_act].trackID = 0;			if (!strnicmp(argv[i+1], "all=", 4)) {				tracks[nb_track_act].kms = argv[i+1] + 4;			} else if (!ext) {				tracks[nb_track_act].kms = argv[i+1];			} else {				tracks[nb_track_act].kms = ext+1;				ext[0] = 0;				tracks[nb_track_act].trackID = atoi(szTK);				ext[0] = '=';			}			open_edit = 1;			nb_track_act++;			i++;		}		else if (!stricmp(arg, "-split")) { CHECK_NEXT_ARG split_duration = atof(argv[i+1]); i++; split_size = 0; }		else if (!stricmp(arg, "-split-size") || !stricmp(arg, "-splits")) { CHECK_NEXT_ARG split_size = atoi(argv[i+1]); i++; split_duration = 0; }		else if (!stricmp(arg, "-split-chunk") || !stricmp(arg, "-splitx")) { 			CHECK_NEXT_ARG 			if (!strstr(argv[i+1], ":")) {				fprintf(stdout, "Chunk extraction usage: \"-splitx start->end\" expressed in seconds\n");				return 1;			}			sscanf(argv[i+1], "%lf:%lf", &split_start, &split_duration);			split_duration -= split_start; 			split_size = 0;			i++;		}		/*meta*/		else if (!stricmp(arg, "-set-meta")) { 			CHECK_META_OPS			metas[nb_meta_act].act_type = 0;			parse_meta_args(&metas[nb_meta_act], argv[i+1]);			nb_meta_act++;			open_edit = 1;			i++;		}		else if (!stricmp(arg, "-add-item")) { 			CHECK_META_OPS			metas[nb_meta_act].act_type = 1;			parse_meta_args(&metas[nb_meta_act], argv[i+1]);			nb_meta_act++;			open_edit = 1;			i++;		}		else if (!stricmp(arg, "-rem-item")) { 			CHECK_META_OPS			metas[nb_meta_act].act_type = 2;			parse_meta_args(&metas[nb_meta_act], argv[i+1]);			nb_meta_act++;			open_edit = 1;			i++;		}		else if (!stricmp(arg, "-set-primary")) { 			CHECK_META_OPS			metas[nb_meta_act].act_type = 3;			parse_meta_args(&metas[nb_meta_act], argv[i+1]);			nb_meta_act++;			open_edit = 1;			i++;		}		else if (!stricmp(arg, "-set-xml")) { 			CHECK_META_OPS			metas[nb_meta_act].act_type = 4;			parse_meta_args(&metas[nb_meta_act], argv[i+1]);			nb_meta_act++;			open_edit = 1;			i++;		}		else if (!stricmp(arg, "-rem-xml")) { 			CHECK_META_OPS			metas[nb_meta_act].act_type = 6;			if (parse_meta_args(&metas[nb_meta_act], argv[i+1])) i++;			nb_meta_act++;			open_edit = 1;		}		else if (!stricmp(arg, "-dump-xml")) { 			CHECK_META_OPS			metas[nb_meta_act].act_type = 7;			parse_meta_args(&metas[nb_meta_act], argv[i+1]);			nb_meta_act++;			i++;		}		else if (!stricmp(arg, "-dump-item")) { 			CHECK_META_OPS			metas[nb_meta_act].act_type = 8;			parse_meta_args(&metas[nb_meta_act], argv[i+1]);			nb_meta_act++;			i++;		}		else if (!stricmp(arg, "-package")) {			CHECK_NEXT_ARG 			pack_file  = argv[i+1];			i++;		}				else if (!stricmp(arg, "-brand")) { 			char *b = argv[i+1];			CHECK_NEXT_ARG 			major_brand = GF_4CC(b[0], b[1], b[2], b[3]);			open_edit = 1;			if (b[4]==':') minor_version = atoi(b+5);			i++;		}		else if (!stricmp(arg, "-ab")) { 			char *b = argv[i+1];			CHECK_NEXT_ARG 			if (nb_alt_brand_add>=MAX_CUMUL_OPS) {				fprintf(stdout, "Sorry - no more than %d brand remove operations allowed\n", MAX_CUMUL_OPS);				return 1;			}			brand_add[nb_alt_brand_add] = GF_4CC(b[0], b[1], b[2], b[3]);			nb_alt_brand_add++;			open_edit = 1;			i++;		}		else if (!stricmp(arg, "-rb")) { 			char *b = argv[i+1];			CHECK_NEXT_ARG 			if (nb_alt_brand_rem>=MAX_CUMUL_OPS) {				fprintf(stdout, "Sorry - no more than %d brand remove operations allowed\n", MAX_CUMUL_OPS);				return 1;			}			brand_rem[nb_alt_brand_rem] = GF_4CC(b[0], b[1], b[2], b[3]);			nb_alt_brand_rem++;			open_edit = 1;			i++;		}#endif		else if (!stricmp(arg, "-languages")) { 			PrintLanguages();			return 0;		}		else if (!stricmp(arg, "-h")) {			if (i+1== (u32) argc) PrintUsage();			else if (!strcmp(argv[i+1], "extract")) PrintExtractUsage();			else if (!strcmp(argv[i+1], "dump")) PrintDumpUsage();			else if (!strcmp(argv[i+1], "swf")) PrintSWFUsage();#ifndef GPAC_READ_ONLY			else if (!strcmp(argv[i+1], "general")) PrintGeneralUsage();			else if (!strcmp(argv[i+1], "hint")) PrintHintUsage();			else if (!strcmp(argv[i+1], "import")) PrintImportUsage();			else if (!strcmp(argv[i+1], "format")) PrintFormats();			else if (!strcmp(argv[i+1], "encode")) PrintEncodeUsage();			else if (!strcmp(argv[i+1], "crypt")) PrintEncryptUsage();			else if (!strcmp(argv[i+1], "meta")) PrintMetaUsage();#endif			else if (!strcmp(argv[i+1], "all")) {#ifndef GPAC_READ_ONLY				PrintGeneralUsage();				PrintHintUsage();				PrintImportUsage();				PrintFormats();				PrintEncodeUsage();				PrintEncryptUsage();				PrintMetaUsage();#endif				PrintExtractUsage();				PrintDumpUsage();				PrintSWFUsage();			}			else PrintUsage();			return 0;		}		else if (!stricmp(arg, "-v")) verbose = 1;		else if (!stricmp(arg, "-tag-list")) {			fprintf(stdout, "Supported iTunes tag modifiers:\n");			for (i=0; i<nb_itunes_tags; i++) {				fprintf(stdout, "\t%s\t%s\n", itags[i].name, itags[i].comment);			}			return 0;		} else {			fprintf(stdout, "Option %s unknown. Please check usage\n", arg);			return 1;		}	}	if (!inName) {		PrintUsage();		return 1;	}	if (raw_cat) {		char chunk[4096];		FILE *fin, *fout;		s64 to_copy, done;		fin = gf_f64_open(raw_cat, "rb");		if (!fin) return 1;		fout = gf_f64_open(inName, "a+b");		if (!fout) {			fclose(fin);			return 1;		}		gf_f64_seek(fin, 0, SEEK_END);		to_copy = gf_f64_tell(fin);		gf_f64_seek(fin, 0, SEEK_SET);		done = 0;		while (1) {			u32 nb_bytes = fread(chunk, 1, 4096, fin);			fwrite(chunk, 1, nb_bytes, fout);			done += nb_bytes;			fprintf(stdout, "Appending file %s - %02.2f done\r", raw_cat, 100.0*done/to_copy);			if (done >= to_copy) break;		}		fclose(fin);		fclose(fout);		return 0;	}	gf_log_set_level(verbose ? GF_LOG_DEBUG : GF_LOG_INFO);	gf_log_set_tools(GF_LOG_CONTAINER|GF_LOG_SCENE|GF_LOG_PARSER|GF_LOG_AUTHOR|GF_LOG_CODING);	if (quiet) {		gf_log_set_level(0);		gf_set_progress_callback(NULL, progress_quiet);	}	/*init libgpac*/	gf_sys_init();	if (do_saf && !encode) {		switch (get_file_type_by_ext(inName)) {		case 2: case 3: case 4: 			encode = 1;			break;		}	}	if (dump_mode == 1 + GF_SM_DUMP_SVG) {		if (strstr(inName, ".srt") || strstr(inName, ".ttxt")) import_subtitle = 2;	}	if (import_subtitle && !trackID) {#ifndef GPAC_READ_ONLY		GF_MediaImporter import;		file = gf_isom_open("ttxt_convert", GF_ISOM_OPEN_WRITE, NULL);		memset(&import, 0, sizeof(GF_MediaImporter));		import.dest = file;		import.in_name = inName;		e = gf_media_import(&import);		if (e) {			fprintf(stdout, "Error importing %s: %s\n", inName, gf_error_to_string(e));			gf_isom_delete(file);			gf_delete_file("ttxt_convert");			return 1;		}		strcpy(outfile, outName ? outName : inName);		if (strchr(outfile, '.')) {			while (outfile[strlen(outfile)-1] != '.') outfile[strlen(outfile)-1] = 0;			outfile[strlen(outfile)-1] = 0;		}		dump_timed_text_track(file, gf_isom_get_track_id(file, 1), dump_std ? NULL : outfile, 1, (import_subtitle==2) ? 2 : dump_srt);		gf_isom_delete(file);		gf_delete_file("ttxt_convert");		if (e) {			fprintf(stdout, "Error converting %s: %s\n", inName, gf_error_to_string(e));			return 1;		}		return 0;#else		fprintf(stdout, "Error: read-only version\n");		return 1;#endif	}#ifndef GPAC_READ_ONLY	if (nb_add) {		u8 open_mode = GF_ISOM_OPEN_EDIT;		if (force_new) {			open_mode = (do_flat) ? GF_ISOM_OPEN_WRITE : GF_ISOM_WRITE_EDIT;		} else {			FILE *test = fopen(inName, "rb");			if (!test) {				open_mode = (do_flat) ? GF_ISOM_OPEN_WRITE : GF_ISOM_WRITE_EDIT;				if (!outName) outName = inName;			}			else fclose(test);		}		open_edit = 1;		file = gf_isom_open(inName, open_mode, tmpdir);		if (!file) {			fprintf(stdout, "Cannot open destination file %s: %s\n", inName, gf_error_to_string(gf_isom_last_error(NULL)) );			return 1;		}		for (i=0; i<nb_add; i++) {			e = import_file(file, szTracksToAdd[i], import_flags, import_fps, agg_samples);			if (e) {				fprintf(stdout, "Error importing %s: %s\n", szTracksToAdd[i], gf_error_to_string(e));				gf_isom_delete(file);				return 1;			}		}		/*unless explicitly asked, remove all systems tracks*/		if (!keep_sys_tracks) remove_systems_tracks(file);		needSave = 1;		if (!conv_type && can_convert_to_isma(file)) conv_type = GF_ISOM_CONV_TYPE_ISMA;	}	if (nb_cat) {		if (!file) {			u8 open_mode = GF_ISOM_OPEN_EDIT;			if (force_new) {				open_mode = (do_flat) ? GF_ISOM_OPEN_WRITE : GF_ISOM_WRITE_EDIT;			} else {				FILE *test = fopen(inName, "rb");				if (!test) {					open_mode = (do_flat) ? GF_ISOM_OPEN_WRITE : GF_ISOM_WRITE_EDIT;					if (!outName) outName = inName;				}				else fclose(test);			}			open_edit = 1;			file = gf_isom_open(inName, open_mode, tmpdir);			if (!file) {				fprintf(stdout, "Cannot open destination file %s: %s\n", inName, gf_error_to_string(gf_isom_last_error(NULL)) );				return 1;			}		}		for (i=0; i<nb_cat; i++) {			e = cat_isomedia_file(file, szFilesToCat[i], import_flags, import_fps, agg_samples, tmpdir);			if (e) {				fprintf(stdout, "Error appending %s: %s\n", szFilesToCat[i], gf_error_to_string(e));				gf_isom_delete(file);				return 1;			}		}		/*unless explicitly asked, remove all systems tracks*/		if (!keep_sys_tracks) remove_systems_tracks(file);		needSave = 1;		if (conv_type && can_convert_to_isma(file)) conv_type = GF_ISOM_CONV_TYPE_ISMA;	}#endif#ifndef GPAC_READ_ONLY	else if (chunk_mode) {		if (!inName) {			fprintf(stdout, "chunk encoding syntax: [-outctx outDump] -inctx inScene auFile\n");			return 1;		}		e = EncodeFileChunk(inName, outName ? outName : inName, input_ctx, output_ctx, tmpdir);		if (e) fprintf(stdout, "Error encoding chunk file %s\n", gf_error_to_string(e));		return e ? 1 : 0;	}#endif	else if (encode) {#ifndef GPAC_READ_ONLY		FILE *logs = NULL;		if (do_

⌨️ 快捷键说明

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