From e2dbdb46b12e961d23f121686ee81c71f23cd061 Mon Sep 17 00:00:00 2001 From: hdsdi3g Date: Tue, 4 Apr 2017 18:56:07 +0200 Subject: [PATCH] Update #208 start debugging --- .../kit/PKitOpAtomTo1A_XMLBased.java | 37 ++++++++++++++++++- .../kit/PKitOpAtomTo1A_XMLBasedAtom.java | 7 +++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/app/hd3gtv/mydmam/transcode/kit/PKitOpAtomTo1A_XMLBased.java b/app/hd3gtv/mydmam/transcode/kit/PKitOpAtomTo1A_XMLBased.java index 49f5109f..b3a1a23b 100644 --- a/app/hd3gtv/mydmam/transcode/kit/PKitOpAtomTo1A_XMLBased.java +++ b/app/hd3gtv/mydmam/transcode/kit/PKitOpAtomTo1A_XMLBased.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.net.URL; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; @@ -101,7 +102,7 @@ public List process(File physical_source, Container source_indexing_result ArrayList all_mxf_files = new ArrayList<>(5); - all_mxf_files.add(new File(FilenameUtils.removeExtension(physical_source.getAbsolutePath()) + ".mxf").getCanonicalFile()); + all_mxf_files.add(new File(FilenameUtils.removeExtension(physical_source.getAbsolutePath()) + ".mxf").getCanonicalFile());// TODO must check this content URL dest_archive = null; String outputfile_basename = "(error).mxf"; @@ -142,6 +143,10 @@ public List process(File physical_source, Container source_indexing_result result_op1a = new File(new File(chroot_ftp).getAbsolutePath() + File.separator + dest_archive.getPath() + File.separator + outputfile_basename); } + if (Loggers.Transcode.isDebugEnabled()) { + Loggers.Transcode.debug("Found some atoms declared by " + physical_source.getName() + ": " + all_mxf_files); + } + FileUtils.forceMkdir(result_op1a.getParentFile()); if (result_op1a.exists()) { FileUtils.forceDelete(result_op1a); @@ -220,6 +225,33 @@ public List process(File physical_source, Container source_indexing_result return ""; }); + /** + * Remove duplicate streams + */ + HashSet actual_atom_indexes = new HashSet<>(5); + ArrayList duplicate_atoms_to_delete = new ArrayList<>(1); + + all_atoms.removeIf(atom -> { + Integer index = atom.getMXFStreamMap(); + if (actual_atom_indexes.contains(index)) { + duplicate_atoms_to_delete.add(atom); + Loggers.Transcode.debug("Duplicate atom index (" + index + "), don't use it: " + atom); + return true; + } + actual_atom_indexes.add(index); + return false; + }); + + /** + * Check stream indexes order + */ + for (int pos = 0; pos < all_atoms.size(); pos++) { + int map = all_atoms.get(pos).getMXFStreamMap(); + if (map != pos) { + throw new IOException("Invalid stream map: atom #" + pos + " have a index == " + map + ". " + all_atoms.get(pos).toString()); + } + } + /** * Prepare bmxtranswrap process exec */ @@ -320,6 +352,9 @@ public List process(File physical_source, Container source_indexing_result all_atoms.forEach(atom -> { atom.clean(); }); + duplicate_atoms_to_delete.forEach(atom -> { + atom.clean(); + }); return null; } diff --git a/app/hd3gtv/mydmam/transcode/kit/PKitOpAtomTo1A_XMLBasedAtom.java b/app/hd3gtv/mydmam/transcode/kit/PKitOpAtomTo1A_XMLBasedAtom.java index abb42721..af6beed5 100644 --- a/app/hd3gtv/mydmam/transcode/kit/PKitOpAtomTo1A_XMLBasedAtom.java +++ b/app/hd3gtv/mydmam/transcode/kit/PKitOpAtomTo1A_XMLBasedAtom.java @@ -275,9 +275,14 @@ void clean() { } } } + try { + FileUtils.forceDelete(original_atom); + } catch (IOException e) { + Loggers.Transcode.error("Can't delete atom file", e); + } } public String toString() { - return this.original_atom.getPath(); + return original_atom.getPath(); } }