@@ -37,6 +37,7 @@ class LivePhotoConv.Main {
3737 static bool export_metadata = true ;
3838 static bool frame_to_photo = false ;
3939 static bool minimal_export = false ;
40+ static bool clear_xmp_metadata = true ;
4041 static int threads = 0 ;
4142#if ENABLE_GST
4243 static bool use_ffmpeg = false ;
@@ -51,6 +52,8 @@ class LivePhotoConv.Main {
5152 { " output" , ' o' , OptionFlags . NONE , OptionArg . FILENAME , ref live_photo_path, " The output live photo file path" , " PATH" },
5253 { " export-metadata" , ' \0 ' , OptionFlags . NONE , OptionArg . NONE , ref export_metadata, " Export metadata (default)" , null },
5354 { " drop-metadata" , ' \0 ' , OptionFlags . REVERSE , OptionArg . NONE , ref export_metadata, " Do not export metadata" , null },
55+ { " clear-xmp" , ' \0 ' , OptionFlags . NONE , OptionArg . NONE , ref clear_xmp_metadata, " Clear previous XMP metadata to avoid conflicts (default)" , null },
56+ { " keep-xmp" , ' \0 ' , OptionFlags . REVERSE , OptionArg . NONE , ref clear_xmp_metadata, " Keep previous XMP metadata" , null },
5457#if ENABLE_GST
5558 { " use-ffmpeg" , ' \0 ' , OptionFlags . NONE , OptionArg . NONE , ref use_ffmpeg, " Use FFmpeg to extract instead of GStreamer" , null },
5659 { " use-gst" , ' \0 ' , OptionFlags . REVERSE , OptionArg . NONE , ref use_ffmpeg, " Use GStreamer to extract instead of FFmpeg (default)" , null },
@@ -103,6 +106,8 @@ class LivePhotoConv.Main {
103106 { " dest-dir" , ' d' , OptionFlags . NONE , OptionArg . FILENAME , ref dest_dir, " The destination directory to export" , " PATH" },
104107 { " export-metadata" , ' \0 ' , OptionFlags . NONE , OptionArg . NONE , ref export_metadata, " Export metadata (default)" , null },
105108 { " drop-metadata" , ' \0 ' , OptionFlags . REVERSE , OptionArg . NONE , ref export_metadata, " Do not export metadata" , null },
109+ { " clear-xmp" , ' \0 ' , OptionFlags . NONE , OptionArg . NONE , ref clear_xmp_metadata, " Clear previous XMP metadata to avoid conflicts (default)" , null },
110+ { " keep-xmp" , ' \0 ' , OptionFlags . REVERSE , OptionArg . NONE , ref clear_xmp_metadata, " Keep previous XMP metadata" , null },
106111 { " frame-to-photos" , ' \0 ' , OptionFlags . NONE , OptionArg . NONE , ref frame_to_photo, " Export every frame of a live photo's video as a photo" , null },
107112 { " img-format" , ' f' , OptionFlags . NONE , OptionArg . STRING , ref img_format, " The format of the image exported from video" , " FORMAT" },
108113 { " minimal" , ' \0 ' , OptionFlags . NONE , OptionArg . NONE , ref minimal_export, " Minimal metadata export, ignore unspecified exports" , null },
@@ -253,15 +258,18 @@ class LivePhotoConv.Main {
253258 if (use_ffmpeg) {
254259 live_maker = new LiveMakerFFmpeg (video_path, main_image_path, live_photo_path) {
255260 export_original_metadata = export_metadata,
261+ clear_xmp_metadata = clear_xmp_metadata,
256262 };
257263 } else {
258264 live_maker = new LiveMakerGst (video_path, main_image_path, live_photo_path) {
259265 export_original_metadata = export_metadata,
266+ clear_xmp_metadata = clear_xmp_metadata,
260267 };
261268 }
262269#else
263270 LiveMaker live_maker = new LiveMakerFFmpeg (video_path, main_image_path, live_photo_path) {
264271 export_original_metadata = export_metadata,
272+ clear_xmp_metadata = clear_xmp_metadata,
265273 };
266274#endif
267275 live_maker. export ();
0 commit comments