aaf2.mobid module

Excerpt from SMPTE ST 330 (Focus on Basic UMID):

5 General Specification

A unique material identifier (UMID) provides for the globally unique identification of any audiovisual material.
This standard defines a dual approach through the specification of a basic UMID and an extended UMID.
The basic UMID provides a globally unique identification for audiovisual material that comprises an integer
number of one or more contiguous material units. The basic UMID has no embedded mechanism to
distinguish between individual material units within a single instance of audiovisual material. The data in the
basic UMID can be created through automatic generation.

The extended UMID comprises the basic UMID followed immediately by a source pack that provides a
signature for material units. The source pack comprises a fixed length metadata pack of 32 bytes that
provides sufficient metadata by which source ?when, where and who (or what)? information can be identified
regardless of current ownership or status. The extended UMID also provides a mechanism to distinguish
between individual material units within a single instance of audiovisual material.

The basic UMID is 32 bytes long and the extended UMID is 64 bytes long.
Both UMID types use the key-length-value construct defined by SMPTE ST 336. The key is a 16-byte
universal label truncated to 12 bytes.
In the case of the basic UMID, the length field has a value of 13h and the value is formed by the combination
of a material number and an instance number.
In the case of the extended UMID, the length field has a value of 33h and the value is formed by the
combination of the material and the instance numbers followed by the source pack.
All components of the UMID have a defined byte order for consistent application in storage and streaming
environments.

The components of the basic UMID are:
1. A 12-byte universal label,
2. A 1-byte length value,
3. A 3-byte instance number, and
4. A 16-byte material number.

The combination of the instance and material numbers can be treated as a dumb number.
Note: The material number does not indicate the status of the material (such as copy number) or its representation
(such as the compression kind). The material number can be identical in copies and in different representations of
the material. The purpose of the instance number is to separately identify different representations or instances of
audiovisual material. Thus, for example, a high-resolution picture and a thumbnail can both have the same
material number because they both represent the same picture but, because they are different instances, they will
have different instance numbers for the different representations. Guidance for the consistent application of new
material numbers and instance numbers is given in SMPTE RP 205.


UMID universal label (SMPTELabel)

Byte No.   Description            Value (hex)                 Meaning
----------------------------------------------------------------------------------------
1          Object identifier      06h                         Universal label start
2          Label size             0Ah                         12-byte Universal label
3          Designation: ISO       2Bh                         ISO registered
4          Designation: SMPTE     34h                         SMPTE registered
5          Registry category      01h                         Dictionaries
6          Specific category      01h                         Metadata dictionaries
7          Structure              01h                         Dictionary standard (SMPTE ST 335)
8          Version number         05h                         Version of the metadata dictionary (defined in SMPTE RP 210)
9          Class                  01h                         Identifiers and locators
10         Subclass               01h                         Globally unique identifiers
11         Material type          XXh                         See Section 6.1.2.1
12         Number creation method YYh                         See Section 6.1.2.2

6.1.2.1 - Material type identification

Byte 11 of the UL shall define the material type being identified using one of the values defined in Table 2.
The use of material types '01h', '02h', '03h' and '04h' shall be deprecated for use in implementations using
this revised standard. These values are preserved only for compatibility with systems implemented using
SMPTE ST 330:2000#

Table 2

Byte value    Meaning                                                            Examples and notes
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
01h           picture material                                                   Deprecated
02h           audio material                                                     Deprecated
03h           data material                                                      Deprecated
04h           other material                                                     Deprecated (originally not only picture, audio, or data material, but also a combination of material types)
05h           single picture component                                           e.g. Y component
06h           Two or more picture components in a single container               e.g. interleaved Y, Cb and Cr components
08h           single audio component                                             e.g mono audio
09h           two or more audio components in a single container                 e.g. AES3 audio pair
0Bh           single auxiliary (or data) component                               e.g. sub-titles only
0Ch           two or more auxiliary (or data) components in a single container   e.g. multiple sub-titles streams in different languages
0Dh           mixed group of components in a single container                    e.g. video & stereo audio pair
0Fh           material type is not identified

6.1.2.2 Number creation method identification

Byte 12 of the UL shall define the method by which the material and instance numbers are created. This byte
is divided into top and bottom nibbles for the purpose of this definition.
The top nibble shall occupy the 4 most significant bits (MSBs) of the byte and the value shall be used to
define the method of material number creation. The values used by this nibble shall be limited to the range 0
to 7h so that byte 12 conforms to the ASN.1 BER short form coding rules used by SMPTE ST 298.
The methods of material number generation shall be as defined in table 3 and the specification of the each
method shall be as defined in Annex A.
Note: New material number generation methods can be added by amendment or revision of this document. Each
addition will provide the proposed value (within the range of values currently identified as "Reserved but not
defined") for inclusion in Table 3 together with the supporting definition to be added to Annex A.

Table 3 - Identification of material number generation method::

    Value (hex)   Method
    -------------------------------------------------------------
    0             No defined method
    1             SMPTE method
    2             UUID/UL method
    3             Masked method
    4             IEEE 1394 network method
    5~7           Reserved but not defined

Notes from Pixar 10/30/17

Final note of discussion with Avid engineers how the top nibble in the 12th byte in the SMPTELabel should be set. (In the past we always had it set to 00, i.e. “no defined method”, we had some confusion about how to set it when using a uuid for the material)

Avid Engineer:

“The specification of number creation identification is very clear about using the 4 MSBs for the material number so I am pretty sure that the numbers in the sub-titles of Annex A (e.g. 02h) should not be interpreted literally as values of byte 12. 20h is the correct value of the byte 12 for UL/UUID method/No defined method.

By the way, I don’t see anything wrong with setting byte 12 to 00h (No defined method / No defined method)”

We at Pixar decided to set the byte to 20h, since it (even if already very minimal) completely eliminates the possibility to collide with any MOB ID created by our old MOB ID generation algorithm.

aaf2.mobid.UniqueMobID()
class aaf2.mobid.MobID(mobid=None, bytes_le=None, int=None)

Bases: object

bytes_le
static new()

Static method for generating unique MobIDs. Uses uuid.uuid4() for generation.

material

MobID material representation as a UUID

SMPTELabel
length
instanceHigh
instanceMid
instanceLow
Data1
Data2
Data3
Data4
from_dict(d)

Set MobID from a dict

to_dict()

MobID representation as dict

int

MobID representation as a int

urn

MobID Uniform Resource Name representation. https://en.wikipedia.org/wiki/Uniform_Resource_Name