Netflix / photon

Photon is a Java implementation of the Interoperable Master Format (IMF) standard. IMF is a SMPTE standard whose core constraints are defined in the specification st2067-2:2013
Apache License 2.0
234 stars 76 forks source link

Initial support for 2020 version of IMF #280

Closed davidt-netflix closed 3 years ago

davidt-netflix commented 3 years ago

This initial version contains updated schema files, and new JAXB generated classes for any spec document that included a schema change.

Core Constraints version and CompositionPlaylist version have been further decoupled, because while there was an updated Core Constraints revision (2067-2:2020), there was NOT an update to CompositionPlaylist (2067-3:2016). As a result, a 2016 CPL can be reasonably expected to be paired with either 2016 OR 2020 CoreConstraints.

Many methods have been updated to allow the caller to provide a Core Constraints version. In other scenarios, Core Constraints is automatically detected based on ApplicationIdentification, or namespaces used for Sequence objects.

This also includes some additional refactoring, which reduced the code duplication required, for handling different combinations of CPL and CC versions.

codecov[bot] commented 3 years ago

Codecov Report

Merging #280 into master will decrease coverage by 0.03%. The diff coverage is 71.53%.

Impacted file tree graph

@@             Coverage Diff              @@
##             master     #280      +/-   ##
============================================
- Coverage     67.92%   67.89%   -0.04%     
- Complexity     1700     1722      +22     
============================================
  Files           166      167       +1     
  Lines         11495    11565      +70     
  Branches       1704     1728      +24     
============================================
+ Hits           7808     7852      +44     
- Misses         2888     2904      +16     
- Partials        799      809      +10     
Impacted Files Coverage Δ Complexity Δ
...main/java/com/netflix/imflibrary/app/IMPFixer.java 0.00% <0.00%> (ø) 0.00 <0.00> (ø)
...x/imflibrary/st2067_2/Application2Composition.java 88.43% <ø> (ø) 35.00 <0.00> (ø)
...rary/st2067_2/Application2ExtendedComposition.java 90.00% <ø> (ø) 26.00 <0.00> (ø)
...x/imflibrary/st2067_2/Application5Composition.java 34.84% <ø> (ø) 11.00 <0.00> (ø)
...ix/imflibrary/st2067_2/ApplicationComposition.java 100.00% <ø> (ø) 1.00 <0.00> (ø)
...com/netflix/imflibrary/writerTools/IMPBuilder.java 80.71% <50.00%> (-0.83%) 27.00 <0.00> (ø)
...m/netflix/imflibrary/st2067_2/CoreConstraints.java 56.00% <56.00%> (ø) 10.00 <10.00> (?)
...brary/st2067_2/AbstractApplicationComposition.java 77.05% <66.66%> (+0.05%) 95.00 <1.00> (+1.00)
...mflibrary/st2067_2/IMFCompositionPlaylistType.java 66.33% <66.66%> (ø) 20.00 <1.00> (ø)
...imflibrary/st2067_2/IMFCoreConstraintsChecker.java 77.22% <66.66%> (-0.22%) 46.00 <0.00> (+1.00) :arrow_down:
... and 6 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 93cd7cc...6d5cc46. Read the comment docs.