AMWA-TV / maj

Media Authoring with Java API - for MXF, AAF, IMF and Reg-XML
Apache License 2.0
17 stars 13 forks source link

Tolerance - non-strict mode please? #7

Open mrlimbic opened 7 years ago

mrlimbic commented 7 years ago

As some apps may make lazy AAFs, would it be possible to have some kind of 'non strict' mode when reading AAFs?

For instance trying to read the preface of an AAF exported from Digital Performer but it gives an error. However if I convert it to XML using aaffmtconv then it looks like it does actually contain enough useful information to generate a sequence. It's not complete garbage.

java.lang.ClassCastException: Cannot create a new extendible enumeration property value from the given AUID identity as it does not match the identity of an enumeration element of type PluginCategoryType.
    at tv.amwa.maj.meta.impl.TypeDefinitionExtendibleEnumerationImpl.createValue(TypeDefinitionExtendibleEnumerationImpl.java:559)
    at tv.amwa.maj.meta.impl.TypeDefinitionExtendibleEnumerationImpl.createFromBytes(TypeDefinitionExtendibleEnumerationImpl.java:618)
    at tv.amwa.maj.io.aaf.AAFBuilder$LocalAAFEventReader.decodeProperties(AAFBuilder.java:625)
    at tv.amwa.maj.io.aaf.AAFBuilder$LocalAAFEventReader.processPOIFSReaderEvent(AAFBuilder.java:317)
    at tv.amwa.maj.io.aaf.AAFReader.processProperties(AAFReader.java:172)
    at tv.amwa.maj.io.aaf.AAFReader.processProperties(AAFReader.java:148)
    at tv.amwa.maj.io.aaf.AAFReader.processProperties(AAFReader.java:148)
    at tv.amwa.maj.io.aaf.AAFReader.processProperties(AAFReader.java:148)
    at tv.amwa.maj.io.aaf.AAFReader.read(AAFReader.java:121)
    at tv.amwa.maj.io.aaf.AAFFactory.readPreface(AAFFactory.java:111)
    at net.vordio.maj.MajTest.main(MajTest.java:20)
mrlimbic commented 7 years ago

I also tried an AAF exported by Logic. This also won't validate. Non strict mode is going to be required to work with many apps.

tv.amwa.maj.exception.BadTypeException: Cannot create an instance of the underling record property type due to a tv.amwa.maj.exception.IllegalPropertyValueException: Unable to set the value of month due to a InvocationTargetException: The month must lie in the range 1 to 12.
    at tv.amwa.maj.meta.impl.TypeDefinitionRecordImpl.createValueFromValues(TypeDefinitionRecordImpl.java:521)
    at tv.amwa.maj.meta.impl.TypeDefinitionRecordImpl.createFromBytes(TypeDefinitionRecordImpl.java:828)
    at tv.amwa.maj.meta.impl.TypeDefinitionRecordImpl.createFromBytes(TypeDefinitionRecordImpl.java:825)
    at tv.amwa.maj.io.aaf.AAFBuilder$LocalAAFEventReader.decodeProperties(AAFBuilder.java:625)
    at tv.amwa.maj.io.aaf.AAFBuilder$LocalAAFEventReader.processPOIFSReaderEvent(AAFBuilder.java:317)
    at tv.amwa.maj.io.aaf.AAFReader.processProperties(AAFReader.java:172)
    at tv.amwa.maj.io.aaf.AAFReader.processProperties(AAFReader.java:148)
    at tv.amwa.maj.io.aaf.AAFReader.read(AAFReader.java:121)
    at tv.amwa.maj.io.aaf.AAFFactory.readPreface(AAFFactory.java:111)