-
Notifications
You must be signed in to change notification settings - Fork 77
Photon v5 Developer Notes
Photon v5 (latest PR as of 01/21/25) will introduce several (breaking) changes to API and build system (see changelog in PR for more details). 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
![](https://private-user-images.githubusercontent.com/9813928/405333907-9ceab816-0b7a-487b-b0a2-b49eb8a908cc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NTM2MTcsIm5iZiI6MTczOTY1MzMxNywicGF0aCI6Ii85ODEzOTI4LzQwNTMzMzkwNy05Y2VhYjgxNi0wYjdhLTQ4N2ItYjBhMi1iNDllYjhhOTA4Y2MucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTVUMjEwMTU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZTQ5ZTY3YjJiNDNiMzgzMGRmMzBlYzA0YzlmZDUxMzQxNTJjODc5MGVlMGRmOTZkZjZlZWQ0YjIzZTM4NWVkYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.vwBda0fRnxtWfiiupbMDwY7VslriAh__gKii71L2hbQ)
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.
![](https://private-user-images.githubusercontent.com/9813928/405341566-1b91148c-c508-45ca-8812-05090bed2533.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NTM2MTcsIm5iZiI6MTczOTY1MzMxNywicGF0aCI6Ii85ODEzOTI4LzQwNTM0MTU2Ni0xYjkxMTQ4Yy1jNTA4LTQ1Y2EtODgxMi0wNTA5MGJlZDI1MzMucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTVUMjEwMTU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9OWQxOThiNjQ2ODZmNDdjODA4MjMwY2RmMmMwNDY2NThiMmFmMTE5NjQ0YzgzOTk3NzhmNmE0MmQ1OGQ1Y2I3MyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.jfN1_GuJMpv2RciriX-AeQp3Uof5HtDd0Jp7PIIXLBI)
Warning
The diagram is intended to illustrate the general architecture and is not guaranteed to be complete and up-to-date.