From 867f5fa9211285d47eae8a2fc6fbbb69d063876a Mon Sep 17 00:00:00 2001 From: jeanlf Date: Mon, 17 Jul 2017 17:26:35 +0200 Subject: [PATCH] isobmf single track import now removes references by default - see #874 --- applications/mp4box/fileimport.c | 6 +++++- applications/mp4box/main.c | 1 + include/gpac/isomedia.h | 3 +++ include/gpac/media_tools.h | 2 ++ src/export.cpp | 1 + src/isomedia/isom_write.c | 19 ++++++++++++++++++- src/media_tools/media_import.c | 3 +++ 7 files changed, 33 insertions(+), 2 deletions(-) diff --git a/applications/mp4box/fileimport.c b/applications/mp4box/fileimport.c index 7f4d1bbe6b..d697efb68a 100644 --- a/applications/mp4box/fileimport.c +++ b/applications/mp4box/fileimport.c @@ -368,6 +368,7 @@ GF_Err import_file(GF_ISOFile *dest, char *inName, u32 import_flags, Double forc else if (!stricmp(ext+1, "trailing")) import_flags |= GF_IMPORT_KEEP_TRAILING; else if (!strnicmp(ext+1, "agg=", 4)) frames_per_sample = atoi(ext+5); else if (!stricmp(ext+1, "dref")) import_flags |= GF_IMPORT_USE_DATAREF; + else if (!stricmp(ext+1, "keep_refs")) import_flags |= GF_IMPORT_KEEP_REFS; else if (!stricmp(ext+1, "nodrop")) import_flags |= GF_IMPORT_NO_FRAME_DROP; else if (!stricmp(ext+1, "packed")) import_flags |= GF_IMPORT_FORCE_PACKED; else if (!stricmp(ext+1, "sbr")) import_flags |= GF_IMPORT_SBR_IMPLICIT; @@ -741,6 +742,9 @@ GF_Err import_file(GF_ISOFile *dest, char *inName, u32 import_flags, Double forc } } } else { + if (do_all) + import.flags |= GF_IMPORT_KEEP_REFS; + for (i=0; iReferences) { + gf_isom_box_del((GF_Box *)trak->References); + trak->References = NULL; + } + return GF_OK; +} + + + //changes track ID GF_EXPORT GF_Err gf_isom_set_track_id(GF_ISOFile *movie, u32 trackNumber, u32 trackID) diff --git a/src/media_tools/media_import.c b/src/media_tools/media_import.c index fa78e7f3d8..df1a0e6684 100644 --- a/src/media_tools/media_import.c +++ b/src/media_tools/media_import.c @@ -2147,6 +2147,9 @@ GF_Err gf_import_isomedia(GF_MediaImporter *import) if (import->esd && import->esd->dependsOnESID) { gf_isom_set_track_reference(import->dest, track, GF_ISOM_REF_DECODE, import->esd->dependsOnESID); } + if (import->trackID && !(import->flags & GF_IMPORT_KEEP_REFS)) { + gf_isom_remove_track_references(import->dest, track); + } mstype = gf_isom_get_media_subtype(import->orig, track_in, di);