AS-11 UK DPP Shims Specification v0.9(2015-06-19)

THIS DOCUMENT IS EXPERIMENTAL. It is a representation of the specification of the UK DPP Shims of AMWA AS-11 v1.1.

This is a view of the specification. It is generated from files of different formats (XML, Python scripts, Markdown) which together form the normative definition of the requirements for conformance.

A package of these files is provided separately.

AS-11 MXF Program Contribution

AS-11 specifies a vendor-neutral subset of the MXF file format to use for delivery of finished programming from program producers and program distributors to broadcast stations.

The specification includes details of:

More information about AS-11 can be found here.

Purpose of the AS-11 UK DPP Shims

The AS-11 UK DPP Shims aim to define:

Some notes on practical use:

Several methods are used in this standard to specify requirements. Each of these methods is described here.

Specification Conformance

Normative parts are those that describe elements of the design that are indispensable.

Informative parts are those that are potentially helpful to the user, but not indispensable, and can be removed, changed, or added editorially without affecting interoperability. Informative text does not contain any conformance keywords.

Everything in the normative directory of this distribution package is normative. The informative directory of this distribution package contains informative views of the normative parts and some informative parts to aid readers and implementers.

The keywords "shall" and "shall not" indicate requirements strictly to be followed in order to conform to the document and from which no deviation is permitted.

The keywords, "should" and "should not" indicate that, among several possibilities, one is recommended as particularly suitable, without mentioning or excluding others; or that a certain course of action is preferred but not necessarily required; or that (in the negative form) a certain possibility or course of action is deprecated but not prohibited.

The keywords "may" and "need not" indicate courses of action permissible within the limits of the document.

The keyword "reserved" indicates a provision that is not defined at this time, shall not be used, and may be defined in the future. The keyword "forbidden" indicates "reserved" and in addition indicates that the provision will never be defined in the future.

Rules specified as XML

Some of the requirements for conformance are structured as specific, in some cases atomic, statements. These 'Conformance Rules' (the Rules) are labelled and categorised so that they can be sorted, searched and linked to.

Rather than a traditional, single, large prose document, this set of requirements are expressed as XML. Using a structured, more atomic specification of requirements is intended to make it easier for machines to interpret the Rules, and simpler for future Application Specifications to reuse them.

The XML Rules document is the definitive, structured presentation of the Rules. It is a self-contained XML file that encompasses the Rules themselves and the Defined Terms and External References on which they depend. Each Rule is tagged with one or more Categories, which indicate that a Rule has a connection to that field. Shim tags indicate to which particular AS-11 Shim or Shims a Rule applies. There is also an XML Schema that can be used to validate the XML.

A separate XML contains informative annotations about the Rules. These are intended to aid implementers by highlighting the implications of a Rule that are sometimes overlooked. Each informative note is linked to one or more Rules by referencing their id attributes in an <about> element. Again, an XML Schema is provided to enable validation.

SMPTE Metadata Registers

SMPTE is working to publish Types, Groups, Elements and Labels metadata registers as XML. Currently published registers are available from the SMPTE Regsitration Authority at: http://www.smpte-ra.org

The XML files included for each Descriptive Metadata (DM) scheme contain draft (as yet unpublished) metadata register entries related to the DM scheme as well as some additional entries to which they refer. The XML Schemas used are unlikely to change prior to publication but have not yet been formally ratified. However, they have been designed to represent the required information for each register as set out in the relevant SMPTE standards:

Any entries that are defined by this specification will have a DefiningDocument element that indicates such.

Rules specified as Python code

Some parts of this specification are expressed in Python (developed for Python version 2.7). It is hoped that this will be as simple to read and understand as pseudo code, yet will describe logical intent without ambiguity. It also has the benefit of being executable and so forms what could be considered a reference test suite. Its execution depends on having the right environment, comprising Python variables that must be initialised based on the properties of an MXF file. A description of how to initialise that environment is given below.

For each Element listed in the SMPTE metadata registers entry for the framework define a variable:

Note that the code has been designed to enhance the clarity of the specification rather than for efficient or compact code. Practical implementations are likely to use a different approach.

Data Types

UTF16String

Values of Type UTF16String are stored as Python Unicode strings. UTF16String values are assumed to have been read from the MXF file according to Section 4.3 of SMPTE ST 377-1:2011, terminating before (and discarding) any null character. Note that no other characters appearing before the null character (such as whitespace or non-printable characters) are removed. If an Element / property of type UTF16String is considered "present" but the above processing of the value stored in the MXF file results in zero characters in the string, the corresponding variable shall be assigned the value "" i.e. an empty string.

In determining the "length" of a string the number of Unicode "code points" that it contains must be counted. Note that in various scenarios "code points" do not equate to what are commonly referred to as "characters" -- converting a list of "code points" into a list of "characters" is not always straightforward. In the Python framework used in this package, a suitable statement would be CHECK( len(AS_11_Series_Title) <= 127 ). Note that this limit is certainly not on the number of bytes used for the value of the Element / property, nor is it on the number of "code units".

Integers

All signed and unsigned integer types used in MXF are represented here as Python integers.

Booleans

The values of MXF Booleans are represented by the Python built-in constants True and False.

Record Types

Any value of a Type whose TypeKind is Record is represented here as a Python Dictionary. For each Facet an item is added to the Python Dictionary with a key equal to that of the Symbol of the Facet. The value for this key is set to the parsed value of the relevant portion of the Element / property value.

Integer Enumerations

Any value of an Integer Enumeration Element / property is stored as a Python integer. For each Type with TypeKind Enumeration and a BaseType that is an Integer a variable is defined for each Facet of the Type with:

Additional variables described in Docstrings

A script may describe variables in its Docstring. These must be defined as described in order for the code to function properly.

Helper Files

In addition to scripts that are specific to a part of the specification (such as a Shim or DM Scheme) helper files are included that define classes and functions that are used more generally in the other Python scripts.

This is a view of the specification. It is generated from files of different formats (XML, Python scripts, Markdown) which together form the normative definition of the requirements for conformance.

A package of these files is provided separately.

Rules specified as XML

Using the Rules browser

The Rules depend on Defined Terms and External Reference documents, which are shown below the Rules.

Hover over Terms and References: Hold the mouse pointer over a Term or External Reference link for a summary of its meaning.

Informative Notes: Some of the Rules are accompanied by informative notes, intended to explain implications of a Rule that might not be immediately apparent, or to further clarify aspects that people have misunderstood in the past.

Rule000CoreMXFUKDPP_HD
The file shall conform to SMPTE ST 377-1:2011.
Section 5.2.1 of SMPTE ST 377-1:2011 sets out a non-exhaustive list of changes from SMPTE ST 377:2004.
Rule005CoreMXFUKDPP_SD
The file shall conform to SMPTE ST 377:2004.
This does not prohibit the use of MXF version 1.3 (SMPTE ST 377-1:2011) for SD files. SMPTE encourages users to apply the most recent edition of standards where possible.
Rule010CoreMXFUKDPP_HDUKDPP_SD
The file shall conform to Operational Pattern OP1a.
The file must be labelled as OP1a in the Operational Pattern property of all Partition Packs and the Preface Set, as required by SMPTE ST 377-1:2011 in Section 7.1 and Annex A, respectively.
Rule020CoreMXFUKDPP_HDUKDPP_SD
The Header Partition shall be "Closed" and "Complete".
Byte 15 of the Header Partition Pack Key must be set to 04h and all Header Metadata must have correct values. Hence 'Distinguished Values' cannot be used for 'Best Effort' properties. See Section 6.2.3 of SMPTE ST 377-1:2011 for a full explanation.
Late delivery of a file is the term used to describe a workflow where playout (broadcast) of a file starts before the file transfer from supplier to broadcaster has completed. To support late delivery a broadcaster must be able to trust the metadata that is contained at the beginning of the file.
Rule030CoreMXFUKDPP_HDUKDPP_SD
When first created, the file should include a KLV Fill item of at least 8192 bytes in total length following the Header Metadata.
The "total length" is of the entire item and includes the length of the Key and Length fields.
The extra space afforded by the KLV Fill allows Header Metadata to be edited and added to without rewriting the entire file.
Rule040CoreMXFUKDPP_HD
The file shall contain a Random Index Pack.
Rule050CoreMXFUKDPP_HD
Every Partition in the file shall use a KLV Alignment Grid value of 1.
Rule060CoreMXFUKDPP_HDUKDPP_SD
The file shall contain a complete Index Table before the Essence.
It's generally considered good MXF practice to have one 'thing' per Partition, so you'd have separate Partitions for Header Metadata, Essence, and Index Tables. This isn't a requirement for UK DPP conformance, but following best practice is encouraged.
The Index Table could be placed in the Header Partition, its own Body Partition or in a Body Partition with the Essence. Indeed it could be distributed across all three of these locations. Decoders need to be able to cope with all of these posibilities.
Rule070CoreMXFUKDPP_HDUKDPP_SD
The Index Table shall index every Edit Unit of every Essence Element in the file.
Rule090CoreMXFUKDPP_HDUKDPP_SD
The file shall use the MXF Generic Container.
Rule100CoreMXFUKDPP_HDUKDPP_SD
The Generic Container shall be internal to the file and entirely contained in exactly one Partition.
It's generally considered good MXF practice to have one 'thing' per Partition, so you'd have separate Partitions for Header Metadata, Essence, and Index Tables. This isn't a requirement for UK DPP conformance, but following best practice is encouraged.
The Essence Container could therefore be either in the Header Partition or in a Body Partition.
Rule110CoreMXFUKDPP_HDUKDPP_SD
Rule120CoreMXFUKDPP_HDUKDPP_SD
Each Essence Track in the Top-Level File Package shall be referenced by exactly one Essence Track in the Material Package.
Rule130CoreMXFVideoAudioUKDPP_SD
The file shall conform to SMPTE ST 386:2004 where the Picture Essence operates at "50 Mbit/s" using a "625/50 system".
All aspects of SMPTE ST 386:2004 must be followed. In addition to the mapping of the AES3 Sound Essence and D-10 Picture Essence, it also covers other things such as Index Tables and KAG size.
The constraints on Picture Essence encoding here imply a "level" of "main".
The KLV Alignment Grid of any Partition containing an Essence Container must be 512.
While not strictly specified, the Picture Essence has 608 lines (576 of active picture plus 32 of vertical interval), as is conventional for D-10 pictures and which is alluded to in SMPTE ST 365:2001.
SMPTE ST 386:2004 specifies that there is exactly one Sound Track in each of the Material Package and Top-Level File Package.
Standard Definition content can have an aspect ratio of 16/9 or 4/3.
Rule140AudioUKDPP_SD
Only the channels in the 8-channel AES3 element with a "channel number" of 1, 2, 3 or 4 shall be "valid".
The "Channel Valid Flags" of the 8-channel AES3 element are set to indicate that the first four audio channels are used and that the remaining four are not. Encoders are encouraged to encode digital silence in the parts of the "AES3 Data Area" that correspond to the unused channels. The "Channel Valid Flags" appear in every Edit Unit of Sound Essence and will need to be the same throughout the file.
The "ChannelCount" of the MXF Essence Descriptor that links to the Sound Track which links to the Essence Element carrying the 8-channel AES3 element is set to "4" to indicate that there are four audio channels in the Sound Track.
Rule160AudioUKDPP_SD
The "channel number" of each channel in the 8-channel AES3 element shall be the "Audio Track Number" defined in EBU R 48 and EBU R 123.
Rule170AudioUKDPP_SD
If the value of AS_11_Audio_Track_Layout is Layout_EBU_R_48_2a then each channel in the 8-channel AES3 element with a "channel number" of 3 or 4 shall contain digital silence.
MXF Filler cannot be used here to represent silence.
Rule180VideoUKDPP_HD
The Material Package shall contain exactly one Picture Track.
Rule190VideoUKDPP_HD
The Picture Essence shall conform to SMPTE RP 2027:2011 where: "Class" is "100"; "Television system" is "1080 line system"; "Frame Frequency" is "50i"; "The sequence parameter set and the picture parameter set shall be placed after the access unit delimiter at the beginning of every coded frame". The AVC syntax elements "bit_depth_luma_minus8" and "bit_depth_chroma_minus8" shall be "2".
Decoders must be able to play files that omit private SEI messages from the H.264 bitstream.
Decoders must apply the parameters in the sequence parameter set and picture parameter set.
With these encoding parameters the coded frame size will be 568832 bytes, including the coded frame, sequence parameter set, picture parameter set, SEI messages and/or padding for SEI messages.
The decoded video always has 1080 lines, regardless of any MXF Descriptor property values.
Rule200VideoUKDPP_HD
The Picture Essence shall be mapped to the file as specified in SMPTE RP 2008:2008.
Values of 540 and 544 have been observed in real files for 'Stored Height' in the 'MPEG Video Descriptor'.
If the value for 'Display Height' in the 'MPEG Video Descriptor' is not set, the default value is that of 'Sampled Height', which in turn defaults to the value of 'Stored Height'. 'Display Height' needs to either be set to, or default to 540.
Rule210AudioUKDPP_HD
The Material Package shall contain either exactly 4 or exactly 16 Sound Tracks.
Rule220AudioUKDPP_HD
Each Sound Track shall represent exactly one Audio Channel.
Stereo audio data must be split between two MXF Sound Tracks.
Rule230AudioUKDPP_HDUKDPP_SD
For each Audio Channel the Sound Essence shall be "uncompressed PCM audio data" per SMPTE ST 382:2007, sampled at 48 kHz with 24 bits per sample.
As per Section 6 of SMPTE ST 382:2007 samples are stored as little-endian integers.
Rule240AudioUKDPP_HD
For each Audio Channel the Sound Essence shall be mapped to the file using any method that conforms to SMPTE ST 382:2007.
SMPTE ST 382:2007 describes mapping for AES3 and BWF. In the case of uncompressed PCM, as used here, the mapping for the audio sample data is the same for the AES3 and BWF mappings.
Rule250AudioUKDPP_HD
Each Sound Track in the Material Package shall have a value for "Track Number" that is unique within the set of Sound Tracks in the Material Package. This value shall have the following constraints: minimum equal to 1; maximum equal to the count of Sound Tracks in the Material Package.
This differs from the suggestion in Annex B of SMPTE ST 377-1:2011 that the Track Number be set to zero for all Material Package Tracks.
This really does matter because of the separation of the physical from the logical in MXF files. Without this, decoders can only identify tracks by their track ID or the physical order in the file, which could be anything.
This applies to Material Package Sound Tracks, not those in the Source Package.
Rule260AudioUKDPP_HD
The "Track Number" of each Sound Track in the Material Package shall be the "Audio Track Number" defined in EBU R 48 and EBU R 123.
This differs from the suggestion in Annex B of SMPTE ST 377-1:2011 that the Track Number be set to zero for all Material Package Tracks.
This really does matter because of the separation of the physical from the logical in MXF files. Without this, decoders can only identify tracks by their track ID or the physical order in the file, which could be anything.
This applies to Material Package Sound Tracks, not those in the Source Package.
Rule270AudioUKDPP_HD
If the value of AS_11_Audio_Track_Layout is Layout_EBU_R_48_2a then for each Sound Track in the Material Package with a "Track Number" of 3 or 4 the Sound Essence shall contain digital silence.
MXF Filler cannot be used here to represent silence.
Rule280TimecodeUKDPP_HDUKDPP_SD
The Material Package shall contain exactly one Timecode Track.
Timecode must always be of a type that is able to properly match the content. In the case of UK DPP files that means it must be 25fps non-drop frame.
Rule290TimecodeUKDPP_HDUKDPP_SD
The Timecode Track in the Material Package shall define the authoritative program timecode.
The authority of the Timecode Track in the Material Package needs to be respected by all components of a system that handles UK DPP files.
AS-11 files require a continuous, authoritative timecode representation so that facilities do not have to support multiple, possibly conflicting, representations. AS-11 files use timecode represented by MXF metadata using an MXF Timecode Track. This timecode representation is referred to as Synthetic Timecode because the representation is purely in the form of MXF metadata and not in the form of a SMPTE 12M Timecode bit stream associated with audio and video Essence data in an Essence Container.
Rule300SubtitlesUKDPP_HDUKDPP_SD
The file shall not contain Closed Captions.
Rule350VideoUKDPP_HDUKDPP_SD
The "Active Format Descriptor" property of the Picture Essence Descriptor shall be present.
Section G.2.5 of SMPTE ST 377-1:2011 describes compliant encoder and decoder behavior with respect to SMPTE ST 2016-1:2009.
Section G.2.5 of SMPTE ST 377-1:2011 requires that the value of the "Active Format Descriptor" property be constant for the duration of the associated Picture Track.
Rule351VideoUKDPP_HDUKDPP_SD
The 4-bit AFD encoded in the "Active Format Descriptor" property of the Picture Essence Descriptor shall be one of the following decimal values: 9 or 10 or 14.
Section G.2.5 of SMPTE ST 377-1:2011 describes compliant encoder and decoder behavior with respect to SMPTE ST 2016-1:2009.
Section G.2.5 of SMPTE ST 377-1:2011 requires that the value of the "Active Format Descriptor" property be constant for the duration of the associated Picture Track.
The AFD (as it is used in AS-11 DPP files where only a very restricted set of values are permitted) can be considered as telling the decoder what video transformations it can reasonably make when displaying the video. For example when displaying the video on a "problematic" screen (where a "problematic" screen could be one where the dimensions of the screen mean that if the video is displayed full-screen it does not have the stated "aspect ratio" – in this case the decoder could wish to "zoom & crop" or "pillarbox" or "letterbox" the video as appropriate).
Rule400DolbyAudioMetadataUKDPP_HD
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule401DolbyAudioMetadataUKDPP_HD
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule402DolbyAudioMetadataUKDPP_HD
In AS-11 Dolby Audio Metadata Carriage the mapping of VANC Data Packets into ANC Frame Elements shall be as specified in SMPTE ST 436:2006 where "Payload Sample Coding" shall be "8-bit luma samples" and "Wrapping Type" shall be "VANC Frame".
The UInt8 enumeration of "8-bit luma samples" as specified in SMPTE ST 436:2006 is 04h.
The UInt8 enumeration of "VANC Frame" as specified in SMPTE ST 436:2006 is 01h.
The ANC Frame Element can also contain HANC Data Packets and other VANC Data Packets in addition to those carrying Dolby Audio Metadata Bitstream. Irrespective of what data is carried in the ANC Frame Element, there is only ever one Track (in each of the Material Package and Top-Level File Package) and one associated Essence Descriptor.
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule403DolbyAudioMetadataUKDPP_HD
In AS-11 Dolby Audio Metadata Carriage the "Line Number" used for each field's VANC Data Packet in the ANC Frame Element shall be the same for all VANC Data Packets for that field for the identified Audio Program.
SMPTE ST 2020-1:2008 specifies that the SDID value within the VANC Data Packet be used to identify the Sound Tracks that make up the Audio Program. For example, VANC Data Packets that contain Dolby Audio Metadata Bitstream for a 5.1 channel Audio Program starting at channel pair 5/6 will require the SDID value in the VANC Data Packet to be set to 04h.
VANC Data Packets that are carrying Dolby Audio Metadata Bitstream will have a DID value of 45h.
The file can use AS-11 Dolby Audio Metadata Carriage to carry audio presentation metadata for zero, one or more than one Audio Programs.
SMPTE 2020-B requires that there is "one packet in each field of interlaced video formats". However, the two packets in each interlaced video frame are not identical.
The values of SMPTE RDD 6:2008 metadata properties might change from one frame to the next, but normally they will not. However, the VANC Data Packets in the file will not be identical even if the metadata is static: the "frame_count" will certainly increment and the "description_text" (if not null) will change. See SMPTE RDD 6:2008 for more details.
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule404DolbyAudioMetadataUKDPP_HD
If AS-11 Dolby Audio Metadata Carriage is used then the audio presentation metadata that it carries shall be authoritative for the identified Audio Program.
A conflicting Dolby Audio Metadata Bitstream or overlapping audio presentation metadata scheme could be present in the file. For instance: MXF Essence Descriptors; Broadcast Wave Format metadata chunks; AES3 subframes.
The file can use AS-11 Dolby Audio Metadata Carriage to carry audio presentation metadata for zero, one or more than one Audio Programs.
Rule500StaticDescriptiveMetadataUKDPP_HDUKDPP_SD
The "DM_AS_11_Core" DM Scheme shall be identified by the DM Scheme Label DM_AS_11_Core and shall have the following members: the DM Framework DM_AS_11_Core_Framework.
Descriptive Metadata Schemes defined by this specification are in the "dm_schemes" directory of the distribution package.
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule505SegmentationUKDPP_HDUKDPP_SD
The "DM_AS_11_Segmentation" DM Scheme shall be identified by the DM Scheme Label DM_AS_11_Segmentation and shall have the following members: the DM Framework DM_AS_11_Segmentation_Framework.
Descriptive Metadata Schemes defined by this specification are in the "dm_schemes" directory of the distribution package.
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule510StaticDescriptiveMetadataUKDPP_HDUKDPP_SD
The "DM_AS_11_UKDPP" DM Scheme shall be identified by the DM Scheme Label DM_AS_11_UKDPP and shall have the following members: the DM Framework DM_AS_11_UKDPP_Framework.
Descriptive Metadata Schemes defined by this specification are in the "dm_schemes" directory of the distribution package.
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule530SegmentationUKDPP_HDUKDPP_SD
The file shall contain exactly one AS-11 Segmentation Track and it shall be in the Material Package.
The "Track Name" property of the AS-11 Segmentation Track does not identify the segmentation metadata scheme. In the absence of other requirements for "Track Name", it is suggested that files use a value corresponding to the DM Scheme used in the track, e.g. "AS_11_Segmentation".
The AS-11 Segmentation Track is identified by the presence of DM Segment objects that each strongly reference an instance of the "DM_AS_11_Core_Framework" DM Framework.
Repetition of Header Metadata in the Footer Partition is not considered to be another instance of any of the components of that Header Metadata.
Rule532SegmentationUKDPP_HDUKDPP_SD
The AS-11 Segmentation Track shall be a Timeline Track and shall contain a Sequence that is composed of zero or more Filler objects and one or more DM Segment objects.
The AS-11 Segmentation Track is identified by the presence of DM Segment objects that each strongly reference an instance of the "DM_AS_11_Core_Framework" DM Framework.
Constraints set out in SMPTE ST 377-1:2011 and SMPTE ST 378:2004 mean that the AS-11 Segmentation Track is necessarily full from start to finish and is the same length as the file.
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule534SegmentationUKDPP_HDUKDPP_SD
Each DM Segment object in the AS-11 Segmentation Track shall represent, and align with, a region of program content in the Source Essence.
The start and end timecodes for program regions, commonly referred to as "start of material" (som) and "end of material" (eom), can be determined based on the location of DM Segment objects on the AS-11 Segmentation Track relative to the adjacent Timecode Track in the Material Package that contains the AS-11 Segmentation Track.
Rule536SegmentationUKDPP_HDUKDPP_SD
Each Filler object in the AS-11 Segmentation Track shall represent, and align with, a region of non-program content in the Source Essence.
Examples of non-programme content include: black, ident, clock.
Rule538SegmentationUKDPP_HDUKDPP_SD
Each DM Segment object in the AS-11 Segmentation Track shall strongly reference an instance of DM_AS_11_Segmentation_Framework.
The AS-11 Segmentation Track is identified by the presence of DM Segment objects that each strongly reference an instance of the "DM_AS_11_Core_Framework" DM Framework.
Rule540CoreMXFUKDPP_HDUKDPP_SD
An AS-11 Static DM Track shall be a Static Track (DM) in the Material Package that contains a Sequence, which contains exactly one DM Segment, which strongly references an instance of a DM Framework.
The "Track Name" property of an AS-11 Static DM Track does not identify the DM Scheme whose DM Framework it references. In the absence of other requirements for "Track Name", it is suggested that files use a value corresponding to the DM Scheme used in the track, e.g. "AS_11_Core", "AS_11_UKDPP".
This Rule is used to define the meaning of a Term used in other Rules. It does not directly constrain the contents of a file that conforms to this specification.
Rule550StaticDescriptiveMetadataUKDPP_HDUKDPP_SD
The file shall contain exactly one instance of DM_AS_11_Core_Framework which shall be strongly referenced from an AS-11 Static DM Track.
Repetition of Header Metadata in the Footer Partition is not considered to be another instance of any of the components of that Header Metadata.
Rule555StaticDescriptiveMetadataUKDPP_HDUKDPP_SD
The file shall contain exactly one instance of DM_AS_11_UKDPP_Framework which shall be strongly referenced from an AS-11 Static DM Track.
Repetition of Header Metadata in the Footer Partition is not considered to be another instance of any of the components of that Header Metadata.

Acronyms and Terms

Acronym or TermDescription
8-channel AES3 elementA way of multiplexing up to eight channels of AES3 audio data. See Section 7.1 of SMPTE ST 331:2011.
AFDActive Format Descriptor code. See SMPTE ST 2016-1:2009.
ANC Frame ElementA KLV triplet containing one frame's worth of an Essence Element carrying ANC packets such as VANC Data Packets. See SMPTE ST 436:2006.
AS-11 Dolby Audio Metadata CarriageA method for the carriage of Dolby Audio Metadata Bitstream that is defined by this document.
AS-11 Segmentation TrackA type of Timeline Track which is defined by this document.
AS-11 Static DM TrackA type of Static Track (DM) which is defined by this document.
AVCAdvanced Video Coding. A video compression format described by ITU-T Rec H.264.
Audio ChannelThe "real world" concept of a single audio signal.
Audio ProgramA collection of one or more audio channels. See SMPTE ST 2020-1:2008.
Closed CaptionText transcription or description of the audio/video data. Synonymous with subtitling.
DM FrameworkA Descriptive Metadata Class that is a Subclass of Descriptive Framework. See SMPTE ST 377-1:2011.
DM SchemeA mechanism for defining collections of Descriptive Metadata.
DM Scheme LabelAn identifier for a DM Scheme. It is stored in an MXF file’s Preface::DMSchemes property to signify the use of that DM Scheme in the file.
DM SegmentAn MXF structure used to generically contain Descriptive Metadata on a Track. See SMPTE ST 377-1:2011.
DM_AS_11_CoreThe label with the symbol "DM_AS_11_Core" defined in the "dm_schemes" directory of the distribution package.
DM_AS_11_Core_FrameworkThe group with the symbol "DM_AS_11_Core_Framework" defined in the "dm_schemes" directory of the distribution package.
DM_AS_11_SegmentationThe label with the symbol "DM_AS_11_Segmentation" defined in the "dm_schemes" directory of the distribution package.
DM_AS_11_Segmentation_FrameworkThe group with the symbol "DM_AS_11_Segmentation_Framework" defined in the "dm_schemes" directory of the distribution package.
DM_AS_11_UKDPPThe label with the symbol "DM_AS_11_UKDPP" defined in the "dm_schemes" directory of the distribution package.
DM_AS_11_UKDPP_FrameworkThe group with the symbol "DM_AS_11_UKDPP_Framework" defined in the "dm_schemes" directory of the distribution package.
Descriptive MetadataGeneric term used for descriptive data whose purpose is to describe Essence data.
Dolby Audio Metadata BitstreamSerial metadata stream defined by Dolby and described in SMPTE RDD 6:2008.
Edit UnitA temporal division of a Track. See SMPTE ST 377-1:2011.
EssenceA bitstream comprising picture, sound or data.
Essence ElementThe entire essence stream of a single Track. See SMPTE ST 379-2:2010.
Essence TrackA type of Track that references Essence.
FillerAn MXF structure used to describe empty space on a Timeline Track.
Frame WrappingA method for dividing and interleaving Essence Elements for each frame of Picture Essence. See SMPTE ST 379-2:2010.
Generic ContainerMXF data structure used to store Essence data in an MXF file. See SMPTE ST 379-2:2010.
Header MetadataMXF data structures that collectively describe the data in the Essence data in an MXF file. See SMPTE ST 377-1:2011.
Header PartitionThe MXF file Partition that contains the Header Metadata.
Index TableA structure in an MXF file used to efficiently access Essence data. See SMPTE ST 377-1:2011.
KLV Alignment GridA notional byte spacing which may be used to align KLV items within a Partition. See SMPTE ST 377-1:2011.
KLV FillRefers to the well-defined means of inserting empty, “fill”, data in an MXF file. See SMPTE ST 377-1:2011.
Material PackageAn MXF data structure that describe an output timeline of the file. See SMPTE ST 377-1:2011.
Operational Pattern OP1aA constrained application of MXF. See SMPTE ST 378:2004.
PartitionA portion of the MXF file. An MXF file consists of a sequence of Partitions. See SMPTE ST 377-1:2011.
Picture EssenceA type of Essence containing predominantly picture data.
Picture Essence DescriptorMXF technical metadata that describes the Picture Essence. See Section F.4 of SMPTE ST 377-1:2011.
Picture TrackA type of Essence Track that references Picture Essence.
Random Index PackA table that contains the byte offsets of all Partitions. See SMPTE ST 377-1:2011.
SMPTE 2020-B"Method B" for mapping audio metadata into vertical ancillary data. See SMPTE ST 2020-1:2008.
SequenceA Structural Metadata Class that is a Subclass of Structural Component. See SMPTE ST 377-1:2011.
Sound EssenceA type of Essence containing sound data.
Sound TrackA type of Essence Track that references Sound Essence.
Source EssenceEssence data referenced by a Source Package.
Source PackageMXF data structure that describes source Essence. See SMPTE ST 377-1:2011.
Static Track (DM)A Track carrying unchanging Descriptive Metadata. See Annex B.27 of SMPTE ST 377-1:2011.
TimecodeAn annotation of elapsed time along a Track. See SMPTE ST 377-1:2011.
Timecode ComponentAn MXF structure that stores Timecode information. See SMPTE ST 377-1:2011.
Timecode TrackAn MXF Track that stores one or more Timecode Components.
Timeline TrackA specialized MXF Track that describes a timeline by specifying an origin and rate. See SMPTE ST 377-1:2011.
Top-Level File PackageA Source Package that is internal to the file and which is directly referenced by a Material Package of the file. See SMPTE ST 377-1:2011.
TrackMXF data structure used to describe the content structure. See SMPTE ST 377-1:2011.
VANC Data PacketAn ancillary data packet in the vertical ancillary data space (VANC). See SMPTE ST 291-1:2011.

Reference Documents

EBU R 123Audio Track Allocation for File Exchange
EBU R 48Allocation of audio tracks on digital television recorders
ITU-T Rec H.264Advanced Video Coding for Generic Audio-Visual Services
SMPTE RDD 6:2008Description and Guide to the Use of the Dolby E Audio Metadata Serial Bitstream
SMPTE RP 2008:2008Material Exchange Format — Mapping AVC Streams into the MXF Generic Container
SMPTE RP 2027:2011AVC Intra-frame Coding Specification for SSM Card Applications
SMPTE ST 2016-1:2009Format for Active Format Description and Bar Data
SMPTE ST 2020-1:2008Format of Audio Metadata and Description of the Asynchronous Serial Bitstream Transport
SMPTE ST 291-1:2011Ancillary Data Packet and Space Formatting
SMPTE ST 331:2011Element and Metadata Definitions for the SDTI-CP
SMPTE ST 365:200112.65-mm Type D-10 Format for MPEG-2 Compressed Video — 525/60 and 625/50
SMPTE ST 377-1:2011Material Exchange Format (MXF) — File Format Specification
SMPTE ST 377:2004Material Exchange Format (MXF) −− File Format Specification
SMPTE ST 378:2004MXF Operational pattern 1A (Single Item, Single Package)
SMPTE ST 379-2:2010MXF Generic Container
SMPTE ST 382:2007Mapping AES3 and Broadcast Wave Audio into the MXF Generic Container
SMPTE ST 386:2004Mapping Type D-10 Essence Data to the MXF Generic Container
SMPTE ST 436:2006MXF Mappings for VBI Lines and Ancillary Data Packets

This is a view of the specification. It is generated from files of different formats (XML, Python scripts, Markdown) which together form the normative definition of the requirements for conformance.

A package of these files is provided separately.

SMPTE Metadata Registers – Summary of Descriptive Metadata Schemes

DM_AS_11_Core

Scheme Label

UL: urn:smpte:ul:060e2b34.04010101.0d010701.0b010000

Symbol: DM_AS_11_Core

Scheme Framework / Group

UL: urn:smpte:ul:060e2b34.027f0101.0d010701.0b010100

Symbol: DM_AS_11_Core_Framework

Properties / Elements in the Framework:

UL Symbol Definition Type SymbolIs OptionalRestrictions
urn:smpte:ul:060e2b34.01010101.0d010701.0b010101AS_11_Series_TitleThe final name of a "group" of episodes to which the programme belongs. These episodes have a shared identification and branding and are linked by common characters, subject matter, style or story.UTF16Stringfalse127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d010701.0b010102AS_11_Programme_TitleThe final name of the programme used to identify it as a version of an episode. This name indicates the specific purpose for which the version was created.UTF16Stringfalse127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d010701.0b010103AS_11_Episode_Title_NumberThe final name of the programme used to identify it as an editorially distinct member of a series i.e. an episode. This name may include a number (or consist only of a number) indicating the position of the episode within the series.UTF16Stringfalse127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d010701.0b010104AS_11_Shim_NameThe name of the AS-11 shim specification to which the MXF file conforms.UTF16Stringfalse127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d010701.0b01010aAS_11_Shim_VersionThe version of the AS-11 shim specification to which the MXF file conforms.VersionTypefalse
urn:smpte:ul:060e2b34.01010101.0d010701.0b010105AS_11_Audio_Track_LayoutA code to identify the scheme that describes the usage of the audio channels encoded in the file.AS_11_Audio_Track_Layout_Enumfalse
urn:smpte:ul:060e2b34.01010101.0d010701.0b010106AS_11_Primary_Audio_LanguageA code to identify the main language used on primary audio channels.ISO_639_2_Language_Codefalse
urn:smpte:ul:060e2b34.01010101.0d010701.0b010107AS_11_Closed_Captions_PresentA flag to indicate whether the programme contains embedded (out of vision) subtitling information.Booleanfalse
urn:smpte:ul:060e2b34.01010101.0d010701.0b010108AS_11_Closed_Captions_TypeA code to identify the editorial description of the closed captions.AS_11_Captions_Type_Enumtrue
urn:smpte:ul:060e2b34.01010101.0d010701.0b010109AS_11_Caption_LanguageA code to identify the main language used in the closed captions.ISO_639_2_Language_Codetrue

DM_AS_11_Segmentation

Scheme Label

UL: urn:smpte:ul:060e2b34.04010101.0d010701.0b020000

Symbol: DM_AS_11_Segmentation

Scheme Framework / Group

UL: urn:smpte:ul:060e2b34.027f0101.0d010701.0b020100

Symbol: DM_AS_11_Segmentation_Framework

Properties / Elements in the Framework:

UL Symbol Definition Type SymbolIs OptionalRestrictions
urn:smpte:ul:060e2b34.01010101.0d010701.0b020101AS_11_Part_NumberA number that both: uniquely identifies the part / segment within the programme; and identifies the position of the part / segment within the programme.UInt16false
urn:smpte:ul:060e2b34.01010101.0d010701.0b020102AS_11_Part_TotalThe count of parts / segments in the entire programme.UInt16false

DM_AS_11_UKDPP

Scheme Label

UL: urn:smpte:ul:060e2b34.04010101.0d0c0101.01000000

Symbol: DM_AS_11_UKDPP

Scheme Framework / Group

UL: urn:smpte:ul:060e2b34.027f0101.0d0c0101.01010000

Symbol: DM_AS_11_UKDPP_Framework

Properties / Elements in the Framework:

UL Symbol Definition Type SymbolIs OptionalRestrictions
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010100UKDPP_Production_NumberA unique identifier / code for the programme (i.e. a unique identifier for this version of the episode).UTF16Stringfalse127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010200UKDPP_SynopsisA brief descriptive summary of the programme.UTF16Stringfalse250 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010300UKDPP_OriginatorThe name of the person or organisation responsible for creating the programme.UTF16Stringfalse127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010400UKDPP_Copyright_YearThe full year in which one of the following occurred or will occur: completion of the production of the programme; delivery of the completed file to the Broadcaster; transmission of the delivered programme.UInt16false
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010500UKDPP_Other_IdentifierAnother unique identifier / code for the content.UTF16Stringtrue127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010600UKDPP_Other_Identifier_TypeThe kind of identifier / code used for "Other Identifier".UTF16Stringtrue127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010700UKDPP_GenreA single style or category describing the whole programme.UTF16Stringtrue127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010800UKDPP_DistributorThe name of the person or organisation responsible for supplying the programme to the Broadcaster.UTF16Stringtrue127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010900UKDPP_Picture_RatioThe ratio of the display width to the display height of the smallest rectangle that completely contains (throughout the duration of the entire programme) the region of the video frame used for "programme content" (where "programme content" includes all pictures, captions, etc but excludes any black bars).Rationaltrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010a00UKDPP_3DA flag to indicate whether the file contains video intended for stereoscopic rendition.Booleanfalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010b00UKDPP_3D_TypeA code to identify the kind of stereoscopic video contained in the file.UKDPP_3D_Type_Enumtrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010c00UKDPP_Product_PlacementA flag to indicate whether the programme contains "product placement".Booleantrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010d00UKDPP_PSE_PassA code to indicate: whether the entire programme passed a flash and pattern test for compliance with Photosensitive Epilepsy (PSE) guidelines; or that such a test has not been carried out.UKDPP_PSE_Pass_Enumfalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010e00UKDPP_PSE_ManufacturerThe name of the product used to perform the test for compliance with PSE guidelines.UTF16Stringtrue127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01010f00UKDPP_PSE_VersionThe version of the algorithm / product module used to perform the test for compliance with PSE guidelines.UTF16Stringtrue127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011000UKDPP_Video_CommentsA description of the subjective quality of the video in the programme including notes on any global characteristics or video treatments.UTF16Stringtrue127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011100UKDPP_Secondary_Audio_LanguageA code to identify the main language used on secondary audio channels.ISO_639_2_Language_Codefalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011200UKDPP_Tertiary_Audio_LanguageA code to identify the main language used on tertiary audio channels.ISO_639_2_Language_Codefalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011300UKDPP_Audio_Loudness_StandardA code to identify a relevant audio loudness recommendation or standard.UKDPP_Audio_Loudness_Standard_Enumfalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011400UKDPP_Audio_CommentsA description of the subjective quality of the audio in the programme including notes on any global characteristics or audio treatments.UTF16Stringtrue127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011500UKDPP_Line_Up_StartThe value of the Position in the MXF Material Package at which the line-up test signals begin.PositionTypefalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011600UKDPP_Ident_Clock_StartThe value of the Position in the MXF Material Package at which the initial "ident" or countdown clock begins.PositionTypefalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011700UKDPP_Total_Number_Of_PartsThe count of parts / segments in the file.UInt16false
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011800UKDPP_Total_Programme_DurationThe sum of the durations of all the parts / segments in the entire programme.LengthTypefalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011900UKDPP_Audio_Description_PresentA flag to indicate whether the programme contains audio description for the visually impaired.Booleanfalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011a00UKDPP_Audio_Description_TypeA code to identify the format of the audio description.UKDPP_Audio_Description_Type_Enumtrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011b00UKDPP_Open_Captions_PresentA flag to indicate whether the programme contains visible (in-vision) subtitling information.Booleanfalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011c00UKDPP_Open_Captions_TypeA code to identify the editorial description of the open captions.AS_11_Captions_Type_Enumtrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011d00UKDPP_Open_Captions_LanguageA code to identify the main language used in the open captions.ISO_639_2_Language_Codetrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011e00UKDPP_Signing_PresentA code to indicate: whether the programme contains visible (in-vision) signing along with the rest of the programme content; or that the programme contains only visible (in-vision) signing.UKDPP_Signing_Present_Enumfalse
urn:smpte:ul:060e2b34.01010101.0d0c0101.01011f00UKDPP_Sign_LanguageA code to identify the main language and / or format of the visible (in-vision) signing contained in the programme.UKDPP_Sign_Language_Enumtrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01012000UKDPP_Completion_DateThe date on which the programme file was completed ready for delivery to the Broadcaster.TimeStampfalse
All facets of the "Time" facet of this "TimeStamp" are zero
urn:smpte:ul:060e2b34.01010101.0d0c0101.01012100UKDPP_Textless_Elements_ExistA flag to indicate whether the programme contains "textless elements" after the end of the main programme content.Booleantrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01012200UKDPP_Programme_Has_TextA flag to indicate whether the main programme content contains text overlays (or similar) in the video.Booleantrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01012300UKDPP_Programme_Text_LanguageA code to identify the main language used for text overlays (or similar) in the video of the main programme content.ISO_639_2_Language_Codetrue
urn:smpte:ul:060e2b34.01010101.0d0c0101.01012400UKDPP_Contact_EmailThe email address for the person or organisation responsible for supplying the programme file to the Broadcaster.UTF16Stringfalse127 Unicode "code points" maximum
urn:smpte:ul:060e2b34.01010101.0d0c0101.01012500UKDPP_Contact_Telephone_NumberThe telephone number for the person or organisation responsible for supplying the programme file to the Broadcaster.UTF16Stringfalse127 Unicode "code points" maximum

SMPTE Metadata Registers – Summary of Types defined for Descriptive Metadata

AS_11_Captions_Type_Enum

SymbolNameValue
Captions_Hard_of_HearingHard of Hearing0
Captions_TranslationTranslation1

AS_11_Audio_Track_Layout_Enum

SymbolNameValue
Layout_EBU_R_48_1aEBU R 48: 1a0
Layout_EBU_R_48_1bEBU R 48: 1b1
Layout_EBU_R_48_1cEBU R 48: 1c2
Layout_EBU_R_48_2aEBU R 48: 2a3
Layout_EBU_R_48_2bEBU R 48: 2b4
Layout_EBU_R_48_2cEBU R 48: 2c5
Layout_EBU_R_48_3aEBU R 48: 3a6
Layout_EBU_R_48_3bEBU R 48: 3b7
Layout_EBU_R_48_4aEBU R 48: 4a8
Layout_EBU_R_48_4bEBU R 48: 4b9
Layout_EBU_R_48_4cEBU R 48: 4c10
Layout_EBU_R_48_5aEBU R 48: 5a11
Layout_EBU_R_48_5bEBU R 48: 5b12
Layout_EBU_R_48_6aEBU R 48: 6a13
Layout_EBU_R_48_6bEBU R 48: 6b14
Layout_EBU_R_48_7aEBU R 48: 7a15
Layout_EBU_R_48_7bEBU R 48: 7b16
Layout_EBU_R_48_8aEBU R 48: 8a17
Layout_EBU_R_48_8bEBU R 48: 8b18
Layout_EBU_R_48_8cEBU R 48: 8c19
Layout_EBU_R_48_9aEBU R 48: 9a20
Layout_EBU_R_48_9bEBU R 48: 9b21
Layout_EBU_R_48_10aEBU R 48: 10a22
Layout_EBU_R_48_11aEBU R 48: 11a23
Layout_EBU_R_48_11bEBU R 48: 11b24
Layout_EBU_R_48_11cEBU R 48: 11c25
Layout_EBU_R_123_2aEBU R 123: 2a26
Layout_EBU_R_123_4aEBU R 123: 4a27
Layout_EBU_R_123_4bEBU R 123: 4b28
Layout_EBU_R_123_4cEBU R 123: 4c29
Layout_EBU_R_123_8aEBU R 123: 8a30
Layout_EBU_R_123_8bEBU R 123: 8b31
Layout_EBU_R_123_8cEBU R 123: 8c32
Layout_EBU_R_123_8dEBU R 123: 8d33
Layout_EBU_R_123_8eEBU R 123: 8e34
Layout_EBU_R_123_8fEBU R 123: 8f35
Layout_EBU_R_123_8gEBU R 123: 8g36
Layout_EBU_R_123_8hEBU R 123: 8h37
Layout_EBU_R_123_8iEBU R 123: 8i38
Layout_EBU_R_123_12aEBU R 123: 12a39
Layout_EBU_R_123_12bEBU R 123: 12b40
Layout_EBU_R_123_12cEBU R 123: 12c41
Layout_EBU_R_123_12dEBU R 123: 12d42
Layout_EBU_R_123_12eEBU R 123: 12e43
Layout_EBU_R_123_12fEBU R 123: 12f44
Layout_EBU_R_123_12gEBU R 123: 12g45
Layout_EBU_R_123_12hEBU R 123: 12h46
Layout_EBU_R_123_16aEBU R 123: 16a47
Layout_EBU_R_123_16bEBU R 123: 16b48
Layout_EBU_R_123_16cEBU R 123: 16c49
Layout_EBU_R_123_16dEBU R 123: 16d50
Layout_EBU_R_123_16eEBU R 123: 16e51
Layout_EBU_R_123_16fEBU R 123: 16f52
Layout_UndefinedUndefined255

ISO_639_2_Language_Code

A three-letter (alpha-3) ISO 639-2 code to represent a language

Renames UTF16String

Note: Be aware that ISO 639-2 defines: both bibliographic and terminologic language codes; that language codes are case insensitive

UKDPP_PSE_Pass_Enum

SymbolNameValue
PSE_YesYes0
PSE_NoNo1
PSE_Not_testedNot tested2

UKDPP_Signing_Present_Enum

SymbolNameValue
Signing_YesYes0
Signing_NoNo1
Signing_Signer_onlySigner only2

UKDPP_3D_Type_Enum

SymbolNameValue
ThreeD_Side_by_sideSide by side0
ThreeD_DualDual1
ThreeD_Left_eye_onlyLeft eye only2
ThreeD_Right_eye_onlyRight eye only3

UKDPP_Audio_Loudness_Standard_Enum

SymbolNameValue
Loudness_NoneNone0
Loudness_EBU_R_128EBU R 1281

UKDPP_Audio_Description_Type_Enum

SymbolNameValue
AD_Control_data_NarrationControl data / Narration0
AD_MixAD Mix1

UKDPP_Sign_Language_Enum

SymbolNameValue
Sign_Language_BSL_British_Sign_LanguageBSL (British Sign Language)0
Sign_Language_BSL_MakatonBSL (Makaton)1

This is a view of the specification. It is generated from files of different formats (XML, Python scripts, Markdown) which together form the normative definition of the requirements for conformance.

A package of these files is provided separately.

Rules specified as Python code

dm_schemes/DM_AS_11_Core/python_rules/dm_extras.py

"""
This file details additional core constraints on DM_AS_11_Core_Framework that
are not expressed in the entries in the SMPTE Metadata Registers.
"""

# Note that there is no "else" statement on any of these. Hence there is no
# restriction on the non-presence of conditional fields when they are not required.
if (AS_11_Closed_Captions_Present):
    CHECK( PRESENT(AS_11_Closed_Captions_Type) )
    CHECK( PRESENT(AS_11_Caption_Language) )

dm_schemes/DM_AS_11_UKDPP/python_rules/dm_extras.py

"""
This file details additional core constraints on DM_AS_11_UKDPP_Framework that
are not expressed in the entries in the SMPTE Metadata Registers.
"""

# Note that there is no "else" statement on any of these. Hence there is no
# restriction on the non-presence of conditional fields when they are not required.
if PRESENT(UKDPP_Other_Identifier):
    CHECK( PRESENT(UKDPP_Other_Identifier_Type) )

if UKDPP_3D:
    CHECK( PRESENT(UKDPP_3D_Type) )

if UKDPP_PSE_Pass != PSE_Not_tested:
    CHECK( PRESENT(UKDPP_PSE_Manufacturer) )
    CHECK( PRESENT(UKDPP_PSE_Version) )

if UKDPP_Audio_Description_Present:
    CHECK( PRESENT(UKDPP_Audio_Description_Type) )

if UKDPP_Open_Captions_Present:
    CHECK( PRESENT(UKDPP_Open_Captions_Type) )
    CHECK( PRESENT(UKDPP_Open_Captions_Language) )

if UKDPP_Signing_Present in [Signing_Yes, Signing_Signer_only]:
    CHECK( PRESENT(UKDPP_Sign_Language) )

if PRESENT(UKDPP_Programme_Has_Text) and UKDPP_Programme_Has_Text:
    CHECK( PRESENT(UKDPP_Programme_Text_Language) )

shims/AS_11_UKDPP_HD_+_SD/python_rules/informative/dm_accuracy.py

"""
These constraints ensure that the DM makes sense relative to the rest of the
MXF file. These are examples / informative notes that will be of practical
interest, but the checks listed here are not exhaustive.

These examples are specifically concerned with UK DPP HD Shim version 1.1 and 
UK DPP SD Shim version 1.1.


Additional variables must be declared in order to execute this script:

* Declare a variable called `AUDIO_CHANNEL_COUNT` and set its value
  (integer) to the number of audio channels in the MXF file.
  (note: this is not the same as the number of MXF Sound Tracks in the
  case of the UK DPP SD Shim)

* Declare a variable called `FILE_DURATION` and set its value (integer)
  to the duration of the Material Package (measured in Edit Units).
  There are numerous ways to determine this value e.g. the duration of
  the Picture Track in the Material Package could be used.
  Do NOT use the duration of the Segmentation Track.

* Declare a variable called `SEGMENTATION_TRACK` to represent the
  Segmentation Track. Here we use a simplified model of the Segmentation
  Track, which is an instance of the MXF Timeline Track (DM). It is
  represented as a Python List of locally defined `DMSegment` and
  `Filler` objects -- these are added to the Python list in the same
  order as they appear on the Segmentation Track in the MXF file. These
  are simple objects each with a `duration` attribute. The DMSegment has
  an additional `framework` attribute, which is an object of type
  `DM_AS_11_Segmentation_Framework`. This framework object contains the
  `AS_11_Part_Number` and `AS_11_Part_Total` elements of the
  AS-11 Segmentation Framework.
"""


### Closed Captions

CHECK( AS_11_Closed_Captions_Present == False )


### Audio Track Layout

# Check the Audio Track Layout has the same number of Tracks as audio channels in the file.
if AS_11_Audio_Track_Layout in [Layout_EBU_R_123_16c,
                                Layout_EBU_R_123_16d,
                                Layout_EBU_R_123_16f]:
    CHECK( AUDIO_CHANNEL_COUNT == 16 )
elif AS_11_Audio_Track_Layout in [Layout_EBU_R_48_2a,
                                  Layout_EBU_R_123_4b,
                                  Layout_EBU_R_123_4c]:
    CHECK( AUDIO_CHANNEL_COUNT == 4 )
# No "else" here because we're not interested in other values of AS_11_Audio_Track_Layout
# (which is constrained to these values elsewhere)


if AS_11_Audio_Track_Layout not in [Layout_EBU_R_123_16d,
                                    Layout_EBU_R_123_16f]:
    CHECK( UKDPP_Secondary_Audio_Language == "zxx" )
    CHECK( UKDPP_Tertiary_Audio_Language == "zxx" )
# No further logic here since "zxx" is also permitted when there are tracks available for
# secondary or tertiary audio languages.
# This test deliberately leaves these two Audio Track Layouts unconstrained for future use.


if AS_11_Audio_Track_Layout in [Layout_EBU_R_48_2a,
                                Layout_EBU_R_123_4b]:
    CHECK( UKDPP_Audio_Description_Present == False )
elif AS_11_Audio_Track_Layout in [Layout_EBU_R_123_4c]:
    CHECK( UKDPP_Audio_Description_Present == True )
# No additional tests here because other Audio Track Layouts (potentially) allow Audio Description


### Segmentation

# Check that the segmentation track fully describes the entire file
CHECK( sum([item.duration for item in SEGMENTATION_TRACK]) == FILE_DURATION )


# Gather together the DMSegments on the Segmentation Track - we're going to use them later
dm_segments = [item for item in SEGMENTATION_TRACK if isinstance(item, DMSegment)]

# Check that Total Number of Parts matches the total number of DMSegments on the Segmentation Track.
CHECK( UKDPP_Total_Number_Of_Parts == len(dm_segments) )

# Check that the Part Total of all DMSegments on the Segmentation Track match
for segment in dm_segments:
    CHECK( segment.framework.AS_11_Part_Total == dm_segments[0].framework.AS_11_Part_Total )

# Check that the Part Numbers increment properly
for i in range(1, len(dm_segments)):
    CHECK( dm_segments[i].framework.AS_11_Part_Number == (1 + dm_segments[i-1].framework.AS_11_Part_Number) )
# Note: this expression iterates through all the DMSegment objects in dm_segments from the second object
# to the final object (inclusive). There will be zero iterations unless there are at least two DMSegment
# objects in dm_segments.


if (UKDPP_Total_Number_Of_Parts == dm_segments[0].framework.AS_11_Part_Total):
    # This is a single-file programme

    # Check that DM total programme duration matches sum of durations of DM programme parts
    CHECK( UKDPP_Total_Programme_Duration == sum([segment.duration for segment in dm_segments]) )
    # Check Part Number of the first DMSegment on the Segmentation Track is 1
    CHECK( dm_segments[0].framework.AS_11_Part_Number == 1 )
    # Check that the Part Number of the last DMSegment on the Segmentation Track is equal to Part Total
    # (this is redundant when combined with other tests, but is here for consistency with the multi-file case)
    CHECK( dm_segments[-1].framework.AS_11_Part_Number == segment.framework.AS_11_Part_Total)

elif (UKDPP_Total_Number_Of_Parts < dm_segments[0].framework.AS_11_Part_Total):
    # This is a multi-file programme

    # Check that DM total programme duration exceeds sum of durations of DM programme parts
    CHECK( UKDPP_Total_Programme_Duration > sum([segment.duration for segment in dm_segments]) )
    # Check Part Number of the first DMSegment on the Segmentation Track is greater than or equal to 1
    # Note: it would be 1 in the case that this MXF file is the first file in the multi-file programme
    CHECK( dm_segments[0].framework.AS_11_Part_Number >= 1 )
    # Check that the Part Number of the last DMSegment on the Segmentation Track is less than or equal to Part Total
    # Note: it would be equal to Part Total in the case that this MXF file is the final file in a multi-file programme
    CHECK( dm_segments[-1].framework.AS_11_Part_Number <= segment.framework.AS_11_Part_Total )

else:
    # This file doesn't make sense - fail.
    CHECK( False )

shims/AS_11_UKDPP_HD_+_SD/python_rules/ukdpp_hd_shim_delivery_constraints.py

"""
These constraints are not related to file format, but do form part of
the UK DPP HD Shim specification.
"""

CHECK( AS_11_Audio_Track_Layout in [Layout_EBU_R_48_2a,
                                    Layout_EBU_R_123_4b,
                                    Layout_EBU_R_123_4c,
                                    Layout_EBU_R_123_16c,
                                    Layout_EBU_R_123_16d,
                                    Layout_EBU_R_123_16f] )

CHECK( AS_11_Shim_Name == "UK DPP HD" )
CHECK( AS_11_Shim_Version == {"VersionMajor":1, "VersionMinor":1} )

if PRESENT( UKDPP_Picture_Ratio ):
    CHECK( UKDPP_Picture_Ratio in [{"Numerator":4, "Denominator":3},
                                   {"Numerator":14, "Denominator":9},
                                   {"Numerator":15, "Denominator":9},
                                   {"Numerator":16, "Denominator":9},
                                   {"Numerator":37, "Denominator":20},
                                   {"Numerator":21, "Denominator":9},
                                   {"Numerator":12, "Denominator":5}] )

shims/AS_11_UKDPP_HD_+_SD/python_rules/ukdpp_sd_shim_delivery_constraints.py

"""
These constraints are not related to file format, but do form part of
the UK DPP SD Shim specification.
"""

CHECK( AS_11_Audio_Track_Layout in [Layout_EBU_R_48_2a,
                                    Layout_EBU_R_123_4b,
                                    Layout_EBU_R_123_4c] )

CHECK( AS_11_Shim_Name == "UK DPP SD" )
CHECK( AS_11_Shim_Version == {"VersionMajor":1, "VersionMinor":1} )

if PRESENT( UKDPP_Picture_Ratio ):
    CHECK( UKDPP_Picture_Ratio in [{"Numerator":4, "Denominator":3},
                                   {"Numerator":14, "Denominator":9},
                                   {"Numerator":15, "Denominator":9},
                                   {"Numerator":16, "Denominator":9},
                                   {"Numerator":37, "Denominator":20},
                                   {"Numerator":21, "Denominator":9},
                                   {"Numerator":12, "Denominator":5}] )

specification_format_details/python_rules/helper_files/dm_classes.py

"""
Classes to represent parts of MXF and DM structure.
This allows us to use dot.accessors, which Python uses for objects but
not for dictionaries.
"""

class DMSegment(object):
    """
    Represents an MXF DMSegment.
    
    Instance variables:
    
      duration  --  Duration (measured in Edit Units) of the DM Segment
    
      framework --  An object that holds the values of the Elements / properties
                    in the DM Framework to which the DM Segment has a Strong
                    Reference.

    """
    def __init__(self, duration, framework):
        self.duration = duration
        self.framework = framework


class Filler(object):
    """
    Represents an MXF Filler Component.
    
    Instance variables:
    
      duration  --  Duration (measured in Edit Units) of the Filler Component
    
    """
    def __init__(self, duration):
        self.duration = duration


class DM_AS_11_Segmentation_Framework(object):
    """
    Represents an instance of the DM_AS_11_Segmentation_Framework DM Framework.
    
    The instance variables hold the values of the Elements / properties in the
    Framework instance.

    """
    def __init__(self, AS_11_Part_Number, AS_11_Part_Total):
        self.AS_11_Part_Number = AS_11_Part_Number
        self.AS_11_Part_Total = AS_11_Part_Total

specification_format_details/python_rules/helper_files/dm_helper_functions.py

"""
Helper functions used within the test definitions.
These have been designed to enhance the clarity of the test
definitions rather than for efficient or compact code.
"""

def CHECK(condition):
    """
    Check that the provided Boolean is True -- take action otherwise.
    
    If the provided "condition" is False this signifies that a DM test has
    failed.
    
    **A MORE HELPFUL ERROR MESSAGE IS RECOMMENDED SO THAT THE USER CAN FIND
    THE FAULT IN THE DM**
    """
    try:
        assert condition == True
    except AssertionError:
        print "Validation failed"
        exit(1)


def TIMECODE_OF(offset, tc_track_start):
    """
    Return timecode string for given offset from start of Timecode Track.
    
    Assumes 25 frames per second, non drop frame, continuous timecode.
    
    Arguments:
      
      offset         --  position (measured in Edit Units) from the start of the
                         Timecode Track
                    
      tc_track_start --  Start Timecode of the Timecode Track expressed as an
                         integer frame count from 00:00:00:00
    """
    
    fps = 25    # assume 25Hz
    position = tc_track_start + offset
    # Wrap around the 24 hour clock
    position = position % (24 * 60 * 60 * fps)
    hh =   position / (60 * 60 * fps)
    mm =  (position % (60 * 60 * fps)) / (60 * fps)
    ss = ((position % (60 * 60 * fps)) % (60 * fps)) / fps
    ff = ((position % (60 * 60 * fps)) % (60 * fps)) % fps
    return "{0:02d}:{1:02d}:{2:02d}:{3:02d}".format(hh,mm,ss,ff)


def PRESENT(variable):
    """
    Return a Boolean to indicate whether the Element is present in the MXF file.
    
    "Presence" of an element / property is determined by the presence of its
    2-byte tag in the relevant KLV set in the MXF file. The Python variable
    representing an MXF Element / property is assumed to be None if, and
    only if, that element / property is considered not present in the MXF file.
    
    The name of the Python variable representing an MXF Element / property
    matches the registered "symbol" (ignoring the namespace) of the MXF
    Element / property.
    """
    if variable is not None:
        return True
    else:
        return False