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
235 stars 77 forks source link

CPL without essence descriptor list fails to validate #150

Closed janbella closed 7 years ago

janbella commented 7 years ago

Hello,

I'm trying to validate some IMP packages, but the problem is, that they fail to validate due to missing EssenceDescriptor list. Regarding to ST 2067-3:2013 standard, it is defined by the schema as:

So, it's not compulsory. Moreover, "The information provided by the EssenceDescriptorList element is intended to assist users in scheduling and tracking content. (...) Implementations should not rely on this information for transcoding or playout. (...) Each EssenceDescriptor element of the essenceDescriptorList element shall be a human-readable representation of selected descriptive information present in one or more Track Files." As I understand it, this information is only an additional information for the human and shall not be required. On the other hand, Photon validator requires presence of the EssenceDescriptorList and checks the content of each EssenceDescriptor. Is this intentional, and if yes, why?
palemieux commented 7 years ago

Regarding to ST 2067-3:2013 standard, it is defined by the schema as:

The schema is not sufficient to completely validate a CPL.

Section 6.12.1 of ST 2067-3 specifies that the SourceEncoding element [of TrackFileResourceType] shall reference one element of the EssenceDescriptorList through its Id element.

Furthermore, Section 6.8 of ST 2067-2, specifies that the entire File Descriptor structure (including Sub Descriptors) referenced by the top-level File Package of each Track File referenced by the Composition Playlist shall be mapped to a single EssenceDescriptor element (see Section 7.1.10.1 in SMPTE ST 2067-3) using a single RegXML fragment as specified in SMPTE ST 2001-1

Therefore an EssenceDescriptor element is mandatory whenever a Track File Resource is used in the CPL.

The EssenceDescriptorList is syntactically optional (in the schema) to accommodate the (currently non-existing) situation where a CPL would not reference any Track File Resource.