No description
  • Java 99.8%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claude Code b67d3702e9 SQC-1943: strip upstream CI from master on the vendored mirror
master is what photon-golden clones (it is now the mirror's default branch,
matching upstream). Forgejo reads .github/workflows, so leaving these here
would let Netflix's pipelines fire on our runner again.
2026-07-24 16:58:19 +01:00
codequality Add App2E HTJ2K constraints validation (#375) 2024-08-20 15:27:23 -07:00
gradle/wrapper Photon v5 updates (#396) 2025-08-27 12:29:56 -07:00
src Add SMPTE ST 2067-201:2026 IAB support (#417) 2026-06-30 19:03:41 -07:00
.gitignore Photon v5 updates (#396) 2025-08-27 12:29:56 -07:00
bootstrap.sh Photon v5 updates (#396) 2025-08-27 12:29:56 -07:00
build.gradle Added nebula.netflixoss plugin to facilitate publication 2025-08-28 14:56:03 -07:00
CHANGELOG.md Photon v5 updates (#396) 2025-08-27 12:29:56 -07:00
CONTRIBUTING.md First commit of the project sources 2015-12-09 17:15:39 -08:00
Dockerfile Update Dockerfile 2020-08-11 13:53:07 -07:00
gradlew Update Gradle Wrapper from 7.5.1 to 7.6. 2022-11-27 00:08:53 +00:00
gradlew.bat Update Gradle Wrapper from 7.5.1 to 7.6. 2022-11-27 00:08:53 +00:00
LICENSE First commit of the project sources 2015-12-09 17:15:39 -08:00
NOTICE.md First commit of the project sources 2015-12-09 17:15:39 -08:00
OSSMETADATA changed osslifecycle to active 2015-12-15 10:38:59 -08:00
README.md Initial support for ST 2067-202 Isochronous Stream of XML Documents (ISXD) Plug-in (#400) 2025-09-24 15:16:38 -07:00
settings.gradle Renaming the root project name to Photon instead of IMFLibrary. 2016-01-27 11:10:39 -08:00

Photon

Photon is a Java implementation of the Interoperable Master Format (IMF) standard. Photon offers tools for parsing, interpreting and validating constituent files that make an Interoperable Master Package (IMP). These include:

  • AssetMap (ST 429-9)
  • PackingList (ST 429-8)
  • Composition Playlist (ST 2067-3)
  • IMF Track Files (ST 2067-5)

Photon parses and reads IMF track files and serializes the metadata into the IMF Composition Playlist structure. Currently, Photon provides support for

  • IMF Application #2E (ST 2067-21)
  • Application #5 ACES (ST 2067-50)
  • Immersive Audio Bitstream (IAB) Level 0 Plug-in (ST 2067-201).
  • Isochronous Stream of XML Documents (ISXD) Plug-in (ST 2067-202).
  • Audio with Frame-based S-ADM Metadata Plug-in (ST 2067-203).

The goal of the Photon is to provide a simple standardized interface to completely validate an IMP.

Build

JDK requirements

Photon can be built using JDK-11.

Gradle

Photon can be built very easily by using the included Gradle wrapper. Having downloaded the sources, simply invoke the following commands inside the folder containing the sources:

Linux/macOS:

$ ./gradlew clean
$ ./gradlew build
$ ./gradlew getDependencies

Windows:

$ gradlew.bat clean
$ gradlew.bat build
$ gradlew.bat getDependencies

Note

getDependencies downloads all dependencies into the ./build/libs directory.

Binaries

Binaries and dependency information for Maven, Ivy, Gradle and others can be found at http://search.maven.org.

Change history and version numbers are available at CHANGELOG.md.

Example for Maven:

<dependency>
    <groupId>com.netflix.photon</groupId>
    <artifactId>Photon</artifactId>
    <version>5.0.0</version>
</dependency>

and for Ivy:

<dependency org="com.netflix.photon" name="Photon" rev="5.0.0" />

Documentation

Sample Applications

Multiple sample applications have been provided with this project (e.g., com.netflix.imflibrary.app.IMFTrackFileReader). Having obtained the dependencies, you can run an application as follows:

Linux/macOS:

java -cp "./build/libs/*:" <fully qualified class name> <arguments>

Example:

// Analyze an IMF Delivery locally
java -cp "./build/libs/*:" com.netflix.imflibrary.app.IMPAnalyzer local_folder_path

// Analyze an IMF Delivery in a S3 bucket
java -cp "./build/libs/*:" com.netflix.imflibrary.app.IMPAnalyzer s3://path/to/IMFDelivery/

// Analyze an individual IMF asset (e.g. AssetMap, PKL, CPL, MXF Track File)
java -cp "./build/libs/*:" com.netflix.imflibrary.app.IMPAnalyzer local_file_path

Windows:

java -cp build\libs\*; <fully qualified class name> <arguments>

Example:

// Analyze an IMF Delivery locally
java -cp build\libs\*; com.netflix.imflibrary.app.IMPAnalyzer IMP_folder_path

S3 Access

Photon supports S3 URIs through aws-java-nio-spi-for-s3. No Photon-specific setup is needed, instead the S3 CLI config and credentials are used directly (see here for instructions).

Example (Linux/macOS):

// Analyze an IMF Delivery in a S3 bucket
java -cp "./build/libs/*:" com.netflix.imflibrary.app.IMPAnalyzer s3://imf-plugfest-imf-plugfest/plugfest_2024_11/source_test_vectors/From_Colorfront/HTJ2K/plugest_FTR_C_EN-XX_US-NR_51_UHD_20241105_OV/

API and Developer Documentation

API documentation is available via Javadoc.

More information is available in the Wiki.