Skip to content
/ photon Public
forked from 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

License

Notifications You must be signed in to change notification settings

cfadamp/photon

This branch is 4 commits behind Netflix/photon:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

16933c9 · Oct 25, 2024
Jan 27, 2022
Aug 20, 2024
Nov 27, 2022
Oct 25, 2024
Jul 31, 2022
Dec 10, 2015
Dec 10, 2015
Aug 11, 2020
Dec 10, 2015
Dec 10, 2015
Dec 15, 2015
Aug 20, 2024
Oct 18, 2016
Sep 13, 2024
Nov 27, 2022
Nov 27, 2022
Jan 27, 2016

Repository files navigation

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) and Application #5 ACES (ST 2067-50), and the Immersive Audio Bitstream (IAB) Plug-in (ST 2067-201).

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-8. Support for earlier jdk versions has not been tested and/or verified.

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:

$ ./gradlew clean
$ ./gradlew build

For Windows

$ gradlew.bat clean
$ gradlew.bat build

Full Documentation

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>0.1.1</version>
</dependency>

and for Ivy:

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

If you need to download all dependencies, you just have to run:

$ ./gradlew getDependencies

It will download all dependencies into ./build/libs directory, where Photon.*.jar is built. 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:

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

E.g.,

java -cp ./build/libs/*: com.netflix.imflibrary.st0429_9.AssetMap asset_map_file_path
java -cp ./build/libs/*: com.netflix.imflibrary.st0429_8.PackingList packing_list_file_path
java -cp ./build/libs/*: com.netflix.imflibrary.st2067_2.Composition composition_playlist_file_path
java -cp ./build/libs/*: com.netflix.imflibrary.app.IMPAnalyzer IMP_folder_path

For Windows please refer to the following examples

To download all dependencies, you just have to run:

$ gradlew.bat getDependencies

It will download all dependencies into build\libs directory, where Photon.*.jar is built. 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:

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

E.g.,

java -cp build\libs\*; com.netflix.imflibrary.st0429_9.AssetMap asset_map_file_path
java -cp build\libs\*; com.netflix.imflibrary.st0429_8.PackingList packing_list_file_path
java -cp build\libs\*; com.netflix.imflibrary.st2067_2.Composition composition_playlist_file_path
java -cp build\libs\*; com.netflix.imflibrary.app.IMPAnalyzer IMP_folder_path

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 99.8%
  • Other 0.2%