-
Notifications
You must be signed in to change notification settings - Fork 78
Photon v5 Developer Notes
Photon v5 introduces several (breaking) changes to API and build system. One of the main goals of this update is the separation of analysis (i.e. reading what's there) and validation (i.e. checking for standards compliance). Below is an overview of the most relevant updates to the architecture and validation flow - click on the image for full resolution.
Below diagram illustrates the main classes involved in IMF validation. At its core remains IMPValidator, providing stateless/static methods for the validation of individual IMF assets and compositions.
Note
IMPAnalyzer - the class providing the popular cmdline tool used by most Photon users - fully depends on IMPValidator for the actual validation logic.
Starting with Photon v5, most specification-specific validation (e.g. for compliance to IMF App2E:2020) is provided by individual classes that implement the simple ConstraintsValidator interface. IMPValidator utilizes ConstraintsValidatorFactory to instantiate relevant validator classes, providing the following values from the input IMFCompositionPlaylist to the factory:
- ApplicationIDs - e.g.
http://www.smpte-ra.org/ns/2067-21/2020 - CPL Schema Namespace - e.g.
http://www.smpte-ra.org/schemas/2067-3/2016 - Sequence Namespaces - e.g.
http://www.smpte-ra.org/ns/2067-201/2019,http://www.smpte-ra.org/schemas/2067-2/2016
Warning
The diagram is intended to illustrate the general architecture and is not guaranteed to be complete and up-to-date.
Below diagram is intended to illustrate the interaction between Photon Java packages, as well as the general validation flow starting from IMPAnalyzer.analyzeDelivery(). Make sure to click on the image for full resolution.
Warning
The diagram is intended to illustrate the general architecture and is not guaranteed to be complete and up-to-date.