/** * A method that returns a list of EssenceDescriptor objects referenced by the Source Packages in the Essence * * @return List of Object model representations corresponding to every EssenceDescriptor in the essence * @throws IOException - any I/O related error will be exposed through an IOException */ public List<? extends InterchangeObject.InterchangeObjectBO> getEssenceDescriptors() throws IOException{ return this.getHeaderPartition().getEssenceDescriptors(); }
/** * A method that returns a list of EssenceDescriptor objects referenced by the Source Packages in this HeaderPartition * @param imfErrorLogger an error logger for recording any errors - cannot be null * @return List<InterchangeObjectBO></> corresponding to every EssenceDescriptor in the underlying resource * @throws IOException - any I/O related error will be exposed through an IOException */ List<InterchangeObject.InterchangeObjectBO> getEssenceDescriptors(@Nonnull IMFErrorLogger imfErrorLogger) throws IOException { return this.getHeaderPartition(imfErrorLogger).getEssenceDescriptors(); }
/** * Returns the EditRate as a list containing the numerator and denominator * @param imfErrorLogger an error logger for recording any errors - cannot be null * @return editRate of the essence as a List of Long Integers */ List<Long> getEssenceEditRateAsList(@Nonnull IMFErrorLogger imfErrorLogger) throws IOException { if(!(this.getHeaderPartition(imfErrorLogger).getEssenceDescriptors().size() > 0)){ throw new MXFException(String.format("No EssenceDescriptors were found in the MXF essence")); } FileDescriptor.FileDescriptorBO fileDescriptorBO = (FileDescriptor.FileDescriptorBO) this.getHeaderPartition(imfErrorLogger).getEssenceDescriptors().get(0); return fileDescriptorBO.getSampleRate(); }
/** * A method that retrieves all the EssenceTypes present in the MXF file * @return a list of all essence types present in the MXF file */ public List<EssenceTypeEnum> getEssenceTypes() { List<EssenceTypeEnum> essenceTypes = new ArrayList<>(); for(InterchangeObject.InterchangeObjectBO interchangeObjectBO : this.getEssenceDescriptors()){ if(interchangeObjectBO.getClass().getEnclosingClass().equals(WaveAudioEssenceDescriptor.class)){ essenceTypes.add(EssenceTypeEnum.MainAudioEssence); } else if(interchangeObjectBO.getClass().getEnclosingClass().equals(CDCIPictureEssenceDescriptor.class)){ essenceTypes.add(EssenceTypeEnum.MainImageEssence); } else if(interchangeObjectBO.getClass().getEnclosingClass().equals(RGBAPictureEssenceDescriptor.class)){ essenceTypes.add(EssenceTypeEnum.MainImageEssence); } else if(interchangeObjectBO.getClass().getEnclosingClass().equals(TimedTextDescriptor.class)){ essenceTypes.add(EssenceTypeEnum.SubtitlesEssence); } } if (essenceTypes.size() == 0){ List<EssenceTypeEnum> essenceTypeList = new ArrayList<>(); essenceTypeList.add(EssenceTypeEnum.UnsupportedEssence); return Collections.unmodifiableList(essenceTypeList); } else{ return Collections.unmodifiableList(essenceTypes); } }
/** * Returns the EditRate as a BigInteger * * @param imfErrorLogger an error logger for recording any errors - cannot be null * @return a BigInteger representing the EditRate of the essence */ BigInteger getEssenceEditRate(@Nonnull IMFErrorLogger imfErrorLogger) throws IOException { BigInteger result = BigInteger.valueOf(0); if(!(this.getHeaderPartition(imfErrorLogger).getEssenceDescriptors().size() > 0)){ imfErrorLogger.addError(new ErrorLogger.ErrorObject(IMFErrorLogger.IMFErrors.ErrorCodes.IMF_ESSENCE_COMPONENT_ERROR, IMFErrorLogger.IMFErrors.ErrorLevels.FATAL, String.format("No EssenceDescriptors were found in " + "the MXF essence Header Partition"))); } InterchangeObject.InterchangeObjectBO essenceDescriptor = this.getHeaderPartition(imfErrorLogger).getEssenceDescriptors().get(0); if(FileDescriptor.FileDescriptorBO.class.isAssignableFrom(essenceDescriptor.getClass())){ FileDescriptor.FileDescriptorBO fileDescriptorBO = (FileDescriptor.FileDescriptorBO) essenceDescriptor; List<Long>list = fileDescriptorBO.getSampleRate(); Long value = list.get(0)/list.get(1); result = BigInteger.valueOf(value); } return result; }
/** * A method that returns a list of EssenceDescriptor objects referenced by the Source Packages in the Essence * * @return List of DOM Nodes corresponding to every EssenceDescriptor in the essence * @throws IOException - any I/O related error will be exposed through an IOException */ public List<Node> getEssenceDescriptorsDOMNodes() throws IOException{ try { List<InterchangeObject.InterchangeObjectBO> essenceDescriptors = this.getHeaderPartition().getEssenceDescriptors(); List<Node> essenceDescriptorNodes = new ArrayList<>(); for (InterchangeObject.InterchangeObjectBO essenceDescriptor : essenceDescriptors) { KLVPacket.Header essenceDescriptorHeader = essenceDescriptor.getHeader(); List<KLVPacket.Header> subDescriptorHeaders = this.getSubDescriptorKLVHeader(essenceDescriptor); /*Create a dom*/ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document document = docBuilder.newDocument(); DocumentFragment documentFragment = this.getEssenceDescriptorAsDocumentFragment(document, essenceDescriptorHeader, subDescriptorHeaders); Node node = documentFragment.getFirstChild(); essenceDescriptorNodes.add(node); } return essenceDescriptorNodes; } catch(ParserConfigurationException e){ throw new IMFException(e); } }
private List<Node> getEssenceDescriptorDOMNodes(Composition.HeaderPartitionTuple headerPartitionTuple) throws IOException { IMFErrorLogger imfErrorLogger = new IMFErrorLoggerImpl(); List<InterchangeObject.InterchangeObjectBO> essenceDescriptors = headerPartitionTuple.getHeaderPartition().getEssenceDescriptors(); List<Node> essenceDescriptorNodes = new ArrayList<>(); for (InterchangeObject.InterchangeObjectBO essenceDescriptor : essenceDescriptors) { try { KLVPacket.Header essenceDescriptorHeader = essenceDescriptor.getHeader(); List<KLVPacket.Header> subDescriptorHeaders = this.getSubDescriptorKLVHeader(headerPartitionTuple.getHeaderPartition(), essenceDescriptor); /*Create a dom*/ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document document = docBuilder.newDocument(); DocumentFragment documentFragment = this.getEssenceDescriptorAsDocumentFragment(document, headerPartitionTuple, essenceDescriptorHeader, subDescriptorHeaders); Node node = documentFragment.getFirstChild(); essenceDescriptorNodes.add(node); } catch (ParserConfigurationException e) { imfErrorLogger.addError(IMFErrorLogger.IMFErrors.ErrorCodes.INTERNAL_ERROR, IMFErrorLogger.IMFErrors .ErrorLevels.FATAL, e.getMessage()); } } if(imfErrorLogger.hasFatalErrors()) { throw new IMFException("Failed to get Essence Descriptor for a resource", imfErrorLogger); } return essenceDescriptorNodes; }
List<InterchangeObject.InterchangeObjectBO> essenceDescriptors = headerPartition.getEssenceDescriptors(); for (InterchangeObject.InterchangeObjectBO essenceDescriptor : essenceDescriptors) { KLVPacket.Header essenceDescriptorHeader = essenceDescriptor.getHeader();