mdb.objects¶
The OMF/Avid class vocabulary. Laid out as a package, mirroring pyavb’s
module layout: base, attributes, locators, descriptors,
misc, components, trackgroups, effects, parameters,
trackers, media. Everything is re-exported from mdb.objects
(and from mdb itself), so mdb.Mob and mdb.objects.Mob are the
same class.
The OMF / Avid class vocabulary.
The property tables in the modules below were derived by census over the two reference samples – every property name the files’ own schema registry declares, with the type each declares for it – then named against the OMF Interchange 2.1 specification and pyavb’s equivalent vocabulary for the AVB container. Where the two disagree, the file wins and the divergence is noted in the class’s docstring.
Many of these classes never appear in the reference samples, and that is the expected result rather than a gap: an MDB indexes media files, so it carries mobs, descriptors and locators in quantity, and carries effects, markers and embedded essence only if something unusual has happened. They are defined anyway because the samples’ schema declares them – 759 property names across roughly a hundred class prefixes – so a file that does use one reads as a typed object rather than as a bag of names.
The modules mirror pyavb’s layout:
|
|
|
|
|
|
|
|
links, markers, list containers, |
|
|
|
|
|
|
|
|
|
the |
|
embedded essence, which an MDB never carries |
Everything is re-exported here, so from mdb.objects import Mob keeps
working and import mdb; mdb.Mob does too.
Import order matters only in that each module imports the ones above it in the table; there are no cycles.
base¶
The two objects everything else hangs off: OMFObject and HEAD.
HEAD is unusual – it shares object 1 with Bento’s own container object, so
the OMF layer and the container layer describe the same TOC entries from two
directions.
- class OMFObject(root, object_id, entries)[source]¶
Bases:
MDBObjectCommon ancestry: every OMF object carries a class tag and a version.
AMEVersionis declared for nearly every class in the schema but written for none of them in the reference samples; it is bound here once rather than repeated on ninety subclasses, since an absent property simply reads asNone.- propertydefs: Sequence[PropertyDef] = [<PropertyDef obj_id -> OMFI:ObjID>, <PropertyDef minor_version -> OMFI:MinorVersion>]¶
- class Header(root, object_id, entries)[source]¶
Bases:
OMFObjectThe OMFi
HEAD, which shares object 1 with Bento’s container object.Its four aggregate indexes are written at close time, which is why they sit in their own region of the heap starting exactly at
container_offset_at_close.- class_id: Optional[str] = 'HEAD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef byte_order -> OMFI:ByteOrder>, <PropertyDef version -> OMFI:Version>, <PropertyDef last_modified -> OMFI:LastModified>, <PropertyDef object_spine -> OMFI:ObjectSpine>, <PropertyDef source_mobs -> OMFI:SourceMobs>, <PropertyDef composition_mobs -> OMFI:CompositionMobs>, <PropertyDef class_dictionary -> OMFI:ClassDictionary>, <PropertyDef num_del_mobs -> OMFI:NumDelMobs>, <PropertyDef del_blobs_size -> OMFI:DelBlobsSize>, <PropertyDef container_offset_at_close -> OMFI:ContainerOffsetAtClose>, <PropertyDef toc_offset_at_close -> OMFI:TOCOffsetAtClose>, <PropertyDef author -> OMFI:Author>, <PropertyDef copyright -> OMFI:Copyright>, <PropertyDef date -> OMFI:Date>, <PropertyDef character_set -> OMFI:CharacterSet>, <PropertyDef media_data -> OMFI:MediaData>, <PropertyDef external_files -> OMFI:ExternalFiles>, <PropertyDef blobs -> OMFI:Blobs>, <PropertyDef attributes -> OMFI:Attributes>]¶
attributes¶
ATTR / ATTB – where most Avid-specific data lives.
Attributes nest: an ATTB of kind object can point at another ATTR,
at a locator, or at a bin link, so these form trees exactly as they do in AVB
bins. Bin membership, project name and the source-file metadata Media
Composer shows in bin columns all arrive through here rather than through a
typed property.
- class AttributeList(root, object_id, entries)[source]¶
Bases:
OMFObjectATTR– an ordered list ofATTBname/value pairs.Attributes nest: an
ATTBof kind object can point at anotherATTR(or at a locator), so these form trees exactly as they do in AVB bins.- class_id: Optional[str] = 'ATTR'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef attr_refs -> OMFI:ATTR:AttrRefs>]¶
- class Attribute(root, object_id, entries)[source]¶
Bases:
OMFObjectATTB– one Avid attribute.kindsays which value property is populated: 1 int, 2 string, 3 object reference, 4 “bob” blob (BobDataplusBobSize).valuepicks the right one for you.- class_id: Optional[str] = 'ATTB'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef kind -> OMFI:ATTB:Kind>, <PropertyDef name -> OMFI:ATTB:Name>, <PropertyDef int_value -> OMFI:ATTB:IntAttribute>, <PropertyDef string_value -> OMFI:ATTB:StringAttribute>, <PropertyDef object_value -> OMFI:ATTB:ObjAttribute>, <PropertyDef bob_data -> OMFI:ATTB:BobData>, <PropertyDef bob_size -> OMFI:ATTB:BobSize>]¶
locators¶
Locators – how an object says where something lives.
Two families share one base. File locators (WINL, DOSL, MACL,
UNXL) name a file; directory locators (DL, MACDL, UNXDL)
name the folder around it. TXTL is a free-text locator, and MSML –
Avid’s media-stream link – is a TXTL subclass, which is why a
descriptor’s MDES:Locator array mixes paths and volume names in one list.
Each concrete class also declares its own PathName alongside the shared
FL:PathName. Media Composer writes the shared one; the per-class
spellings are in the schema of both reference samples and are bound here so a
file that uses them still reads.
- class Locator(root, object_id, entries)[source]¶
Bases:
OMFObjectBase for the locator classes: a path, in one or more spellings.
Avid writes both a legacy code-page
FL:PathNameand aFL:PathNameUTF8twin, and a locator can carry more than one of either (an empty one plus the real path is common), so all values are exposed.Subclasses may add their own path spelling –
UNXL:PathName,DOSL:PathName,DL:PathNameUTF8.pathandall_paths()consider every path-shaped property the class declares, UTF-8 first, so a subclass gets the right answer without overriding anything.- path_properties = ('OMFI:FL:PathNameUTF8', 'OMFI:FL:PathName', 'OMFI:FL:POSIXPathName')¶
OMF property names, most preferred first, that this class may spell a path in. Subclasses prepend their own; the shared
FLpair is the fallback every locator understands.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef path_name -> OMFI:FL:PathName>, <PropertyDef path_name_utf8 -> OMFI:FL:PathNameUTF8>, <PropertyDef path_name_posix -> OMFI:FL:POSIXPathName>]¶
- class WindowsLocator(root, object_id, entries)[source]¶
Bases:
LocatorWINL– a Windows path, usually UNC.- class_id: Optional[str] = 'WINL'¶
OMF 4CC;
Noneon abstract bases
- class DOSLocator(root, object_id, entries)[source]¶
Bases:
LocatorDOSL– a DOS path. Declared in the schema; not seen in the samples.- class_id: Optional[str] = 'DOSL'¶
OMF 4CC;
Noneon abstract bases
- path_properties = ('OMFI:DOSL:PathName', 'OMFI:FL:PathNameUTF8', 'OMFI:FL:PathName', 'OMFI:FL:POSIXPathName')¶
OMF property names, most preferred first, that this class may spell a path in. Subclasses prepend their own; the shared
FLpair is the fallback every locator understands.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef dos_path_name -> OMFI:DOSL:PathName>]¶
- class MacLocator(root, object_id, entries)[source]¶
Bases:
LocatorMACL– a Macintosh path.- class_id: Optional[str] = 'MACL'¶
OMF 4CC;
Noneon abstract bases
- path_properties = ('OMFI:MACL:FileName', 'OMFI:FL:PathNameUTF8', 'OMFI:FL:PathName', 'OMFI:FL:POSIXPathName')¶
OMF property names, most preferred first, that this class may spell a path in. Subclasses prepend their own; the shared
FLpair is the fallback every locator understands.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mac_file_name -> OMFI:MACL:FileName>, <PropertyDef vref -> OMFI:MACL:VRef>, <PropertyDef dir_id -> OMFI:MACL:DirID>, <PropertyDef sds_address -> OMFI:MACL:SDSAddress>, <PropertyDef sds_mob_id -> OMFI:MACL:SDSMobID>]¶
- class UnixLocator(root, object_id, entries)[source]¶
Bases:
LocatorUNXL– a Unix path.- class_id: Optional[str] = 'UNXL'¶
OMF 4CC;
Noneon abstract bases
- path_properties = ('OMFI:UNXL:PathName', 'OMFI:FL:PathNameUTF8', 'OMFI:FL:PathName', 'OMFI:FL:POSIXPathName')¶
OMF property names, most preferred first, that this class may spell a path in. Subclasses prepend their own; the shared
FLpair is the fallback every locator understands.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef unix_path_name -> OMFI:UNXL:PathName>]¶
- class TextLocator(root, object_id, entries)[source]¶
Bases:
LocatorTXTL– a free-text locator; parent class of MSML.- class_id: Optional[str] = 'TXTL'¶
OMF 4CC;
Noneon abstract bases
- path_properties = ('OMFI:TXTL:Name', 'OMFI:FL:PathNameUTF8', 'OMFI:FL:PathName', 'OMFI:FL:POSIXPathName')¶
OMF property names, most preferred first, that this class may spell a path in. Subclasses prepend their own; the shared
FLpair is the fallback every locator understands.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef text_name -> OMFI:TXTL:Name>]¶
- class MediaStreamLink(root, object_id, entries)[source]¶
Bases:
TextLocatorMSML– mob to volume: which drive the media was last seen on.- class_id: Optional[str] = 'MSML'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mob_id -> OMFI:MSML:MobID>, <PropertyDef last_known_volume -> OMFI:MSML:LastKnownVolume>, <PropertyDef last_known_volume_utf8 -> OMFI:MSML:LastKnownVolumeUTF8>, <PropertyDef domain_type -> OMFI:MSML:DomainType>]¶
- class DirectoryLocator(root, object_id, entries)[source]¶
Bases:
LocatorDL– a directory rather than a file.Declared in the schema of both samples and written in neither. It shares the
FL-style path pair, sopathbehaves the same.- class_id: Optional[str] = 'DL'¶
OMF 4CC;
Noneon abstract bases
- path_properties = ('OMFI:DL:PathNameUTF8', 'OMFI:DL:PathName', 'OMFI:FL:PathNameUTF8', 'OMFI:FL:PathName', 'OMFI:FL:POSIXPathName')¶
OMF property names, most preferred first, that this class may spell a path in. Subclasses prepend their own; the shared
FLpair is the fallback every locator understands.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef dir_path_name -> OMFI:DL:PathName>, <PropertyDef dir_path_name_utf8 -> OMFI:DL:PathNameUTF8>]¶
- class MacDirectoryLocator(root, object_id, entries)[source]¶
Bases:
DirectoryLocatorMACDL– a classic Mac OS directory, addressed by volume reference and directory ID rather than by path.- class_id: Optional[str] = 'MACDL'¶
OMF 4CC;
Noneon abstract bases
- path_properties = ('OMFI:MACDL:FileName', 'OMFI:DL:PathNameUTF8', 'OMFI:DL:PathName', 'OMFI:FL:PathNameUTF8', 'OMFI:FL:PathName', 'OMFI:FL:POSIXPathName')¶
OMF property names, most preferred first, that this class may spell a path in. Subclasses prepend their own; the shared
FLpair is the fallback every locator understands.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef vref -> OMFI:MACDL:VRef>, <PropertyDef dir_id -> OMFI:MACDL:DirID>, <PropertyDef file_name -> OMFI:MACDL:FileName>]¶
- class UnixDirectoryLocator(root, object_id, entries)[source]¶
Bases:
DirectoryLocatorUNXDL– a Unix directory.- class_id: Optional[str] = 'UNXDL'¶
OMF 4CC;
Noneon abstract bases
- path_properties = ('OMFI:UNXDL:PathName', 'OMFI:DL:PathNameUTF8', 'OMFI:DL:PathName', 'OMFI:FL:PathNameUTF8', 'OMFI:FL:PathName', 'OMFI:FL:POSIXPathName')¶
OMF property names, most preferred first, that this class may spell a path in. Subclasses prepend their own; the shared
FLpair is the fallback every locator understands.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef unix_dir_path -> OMFI:UNXDL:PathName>]¶
- class DomainLocator(root, object_id, entries)[source]¶
Bases:
TextLocatorDOML– a locator naming a domain rather than a filesystem.The class dictionary of both samples declares
DOML -> TXTL; the only property the schema carries for it is the near-universalAMEVersion, so what a domain name looks like here is unverified.- class_id: Optional[str] = 'DOML'¶
OMF 4CC;
Noneon abstract bases
- class AssetManagerLocator(root, object_id, entries)[source]¶
Bases:
OMFObjectOMML– an asset-management reference: which system owns this media.Written by Interplay and similar asset managers. Absent from both reference samples; the two properties below are the whole of what the schema declares.
- class_id: Optional[str] = 'OMML'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef asset_id -> OMFI:OMML:AssetID>, <PropertyDef asset_manager -> OMFI:OMML:AssetManager>]¶
descriptors¶
MDES and its descendants – what the essence is.
A mob’s PhysicalMedia points here, and this is where a troubleshooting
session usually ends up: codec, raster, sample rate, and the locators that say
where the file was last seen.
The hierarchy below follows the class dictionary written in the reference
samples themselves (MDTP -> MDES, DIDD -> MDFL, CDCI -> DIDD,
JPED -> CDCI, MPGI -> CDCI), not the OMF specification, where they
differ. Classes the samples’ schema declares but never instantiates are
included: they read as typed objects the moment a file uses them, and as
nothing at all until then.
- class MediaDescriptor(root, object_id, entries)[source]¶
Bases:
OMFObjectMDES– the base “physical media” descriptor.MDES:Locatoris an ObjRefArray, not a single reference: one descriptor can name several locators.- class_id: Optional[str] = 'MDES'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef locator_refs -> OMFI:MDES:Locator>, <PropertyDef mob_kind -> OMFI:MDES:MobKind>, <PropertyDef intermediate -> OMFI:MDES:MC:Intermediate>, <PropertyDef acf_uid -> OMFI:AMDL:acfUID>, <PropertyDef acf_wchar -> OMFI:AMDL:acfWChar>, <PropertyDef amdl_attributes -> OMFI:AMDL:Attributes>, <PropertyDef version -> OMFI:MDES:Version>]¶
- class TapeDescriptor(root, object_id, entries)[source]¶
Bases:
MediaDescriptorMDTP– media that lives on a videotape.The class dictionary of both samples declares
MDTP -> MDES. A tape descriptor carries no path, because there is no file: identity is the tape name on the mob and the timecode on its track. Absent from both samples, whose media was imported and transcoded rather than captured.- class_id: Optional[str] = 'MDTP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef cframe -> OMFI:MDTP:CFrame>]¶
- class FilmDescriptor(root, object_id, entries)[source]¶
Bases:
MediaDescriptorMDFM– media that lives on film stock.Declared in the schema of both samples; the schema gives it no properties of its own beyond the near-universal
AMEVersion, so everything useful sits onMDESand on theECCPedge-code track.- class_id: Optional[str] = 'MDFM'¶
OMF 4CC;
Noneon abstract bases
- class NagraDescriptor(root, object_id, entries)[source]¶
Bases:
MediaDescriptorMDNG– audio on a Nagra field recorder.Declared in the schema of both samples with no properties of its own.
- class_id: Optional[str] = 'MDNG'¶
OMF 4CC;
Noneon abstract bases
- class FileDescriptor(root, object_id, entries)[source]¶
Bases:
MediaDescriptorMDFL– media stored in a file: length, rate, and where it starts.- class_id: Optional[str] = 'MDFL'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef length -> OMFI:MDFL:Length>, <PropertyDef sample_rate -> OMFI:MDFL:SampleRate>, <PropertyDef data_offset -> OMFI:MDFL:dataOffset>, <PropertyDef is_omfi -> OMFI:MDFL:IsOMFI>, <PropertyDef version -> OMFI:MDFL:Version>]¶
- class MultiDescriptor(root, object_id, entries)[source]¶
Bases:
FileDescriptorMULD– one file holding several essence streams.Used where a single media file carries, say, video plus interleaved audio:
descriptorsholds one child descriptor per stream. Absent from both reference samples, where Avid writes one file per stream.- class_id: Optional[str] = 'MULD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef count -> OMFI:MULD:Count>, <PropertyDef descriptors -> OMFI:MULD:Descriptor>, <PropertyDef descriptor_ids -> OMFI:MULD:DescriptorIDs>]¶
- class DigitalImageDescriptor(root, object_id, entries)[source]¶
Bases:
FileDescriptorDIDD– picture essence geometry and coding.Avid writes the full OMF raster model (stored / sampled / display / valid rectangles, each as a numerator-denominator pair) plus its own
DIDCompressMethod4CC and the AAF-styleEssenceCompressionlabel.- class_id: Optional[str] = 'DIDD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef stored_width -> OMFI:DIDD:StoredWidth>, <PropertyDef stored_height -> OMFI:DIDD:StoredHeight>, <PropertyDef sampled_width -> OMFI:DIDD:SampledWidth>, <PropertyDef sampled_height -> OMFI:DIDD:SampledHeight>, <PropertyDef sampled_x_offset -> OMFI:DIDD:SampledXOffset>, <PropertyDef sampled_y_offset -> OMFI:DIDD:SampledYOffset>, <PropertyDef display_width -> OMFI:DIDD:DisplayWidth>, <PropertyDef display_height -> OMFI:DIDD:DisplayHeight>, <PropertyDef display_x_offset -> OMFI:DIDD:DisplayXOffset>, <PropertyDef display_y_offset -> OMFI:DIDD:DisplayYOffset>, <PropertyDef frame_layout -> OMFI:DIDD:FrameLayout>, <PropertyDef image_aspect_ratio -> OMFI:DIDD:ImageAspectRatio>, <PropertyDef video_line_map -> OMFI:DIDD:VideoLineMap>, <PropertyDef alpha_transparency -> OMFI:DIDD:AlphaTransparency>, <PropertyDef compression -> OMFI:DIDD:Compression>, <PropertyDef compress_method -> OMFI:DIDD:DIDCompressMethod>, <PropertyDef essence_compression -> OMFI:DIDD:EssenceCompression>, <PropertyDef coding_equations -> OMFI:DIDD:CodingEquations>, <PropertyDef color_primaries -> OMFI:DIDD:ColorPrimaries>, <PropertyDef transfer_characteristic -> OMFI:DIDD:TransferCharacteristic>, <PropertyDef resolution_id -> OMFI:DIDD:DIDResolutionID>, <PropertyDef image_size -> OMFI:DIDD:DIDImageSize>, <PropertyDef frame_sample_size -> OMFI:DIDD:FrameSampleSize>, <PropertyDef first_frame_offset -> OMFI:DIDD:FirstFrameOffset>, <PropertyDef frame_index_byte_order -> OMFI:DIDD:FrameIndexByteOrder>, <PropertyDef offset_to_rle_frame_indexes -> OMFI:DIDD:OffsetToRLEFrameIndexes>, <PropertyDef offset_to_frame_indexes -> OMFI:JPED:OffsetToFrameIndexes>, <PropertyDef client_fill_start -> OMFI:DIDD:ClientFillStart>, <PropertyDef client_fill_end -> OMFI:DIDD:ClientFillEnd>, <PropertyDef image_alignment_factor -> OMFI:DIDD:ImageAlignmentFactor>, <PropertyDef uniformness -> OMFI:DIDD:Uniformness>, <PropertyDef video_line_map_size -> OMFI:DIDD:VideoLineMapSize>, <PropertyDef stored_f2_offset -> OMFI:DIDD:StoredF2Offset>, <PropertyDef frame_start_offset -> OMFI:DIDD:FrameStartOffset>, <PropertyDef essence_element_size_kind -> OMFI:DIDD:EssenceElementSizeKind>, <PropertyDef frame_sample_size_checked -> OMFI:DIDD:FrameSampleSizeHasBeenCheckedWithMapper>, <PropertyDef reformatting_option -> OMFI:DIDD:ReformattingOption>, <PropertyDef has_premultiplied_alpha -> OMFI:DIDD:HasPremultipliedAlpha>, <PropertyDef needs_vertical_flip -> OMFI:DIDD:NeedsVerticalFlip>, <PropertyDef next_descriptor -> OMFI:DIDD:NextDIDDesc>]¶
- RECTANGLES = ('Valid', 'Essence', 'Source', 'Framing')¶
The four exact-rational rectangles, in the order OMF defines them. Each is eight properties –
<name>XNum/XDenand so on – whichrect()reassembles into aRect.
- structural_properties: Sequence[str] = ('OMFI:DIDD:ValidXNum', 'OMFI:DIDD:ValidXDen', 'OMFI:DIDD:ValidYNum', 'OMFI:DIDD:ValidYDen', 'OMFI:DIDD:ValidWidthNum', 'OMFI:DIDD:ValidWidthDen', 'OMFI:DIDD:ValidHeightNum', 'OMFI:DIDD:ValidHeightDen', 'OMFI:DIDD:EssenceXNum', 'OMFI:DIDD:EssenceXDen', 'OMFI:DIDD:EssenceYNum', 'OMFI:DIDD:EssenceYDen', 'OMFI:DIDD:EssenceWidthNum', 'OMFI:DIDD:EssenceWidthDen', 'OMFI:DIDD:EssenceHeightNum', 'OMFI:DIDD:EssenceHeightDen', 'OMFI:DIDD:SourceXNum', 'OMFI:DIDD:SourceXDen', 'OMFI:DIDD:SourceYNum', 'OMFI:DIDD:SourceYDen', 'OMFI:DIDD:SourceWidthNum', 'OMFI:DIDD:SourceWidthDen', 'OMFI:DIDD:SourceHeightNum', 'OMFI:DIDD:SourceHeightDen', 'OMFI:DIDD:FramingXNum', 'OMFI:DIDD:FramingXDen', 'OMFI:DIDD:FramingYNum', 'OMFI:DIDD:FramingYDen', 'OMFI:DIDD:FramingWidthNum', 'OMFI:DIDD:FramingWidthDen', 'OMFI:DIDD:FramingHeightNum', 'OMFI:DIDD:FramingHeightDen')¶
OMF property names this class reads structurally rather than through a
PropertyDef– the parallel per-point, per-band and per-keyframe columns, and the numerator/denominator pairs that make up a rectangle. They have no single sensible attribute name (there are n of each), so a method assembles them instead; listing them here keeps them visible toknown_properties()and to the coverage tests, so a property cannot be quietly forgotten.
- rect(name)[source]¶
One of the exact-rational rectangles, or
Noneif absent.nameis one ofRECTANGLES. Each component comes back as a(numerator, denominator)pair rather than a float, because that is what the file holds and rounding here would be lossy.
- class CDCIDescriptor(root, object_id, entries)[source]¶
Bases:
DigitalImageDescriptorCDCI– colour-difference component image (Y’CbCr).- class_id: Optional[str] = 'CDCI'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef component_width -> OMFI:CDCI:ComponentWidth>, <PropertyDef horizontal_subsampling -> OMFI:CDCI:HorizontalSubsampling>, <PropertyDef vertical_subsampling -> OMFI:CDCI:VerticalSubsampling>, <PropertyDef color_siting -> OMFI:CDCI:ColorSiting>, <PropertyDef black_reference_level -> OMFI:CDCI:BlackReferenceLevel>, <PropertyDef white_reference_level -> OMFI:CDCI:WhiteReferenceLevel>, <PropertyDef color_range -> OMFI:CDCI:ColorRange>, <PropertyDef alpha_sampled_width -> OMFI:CDCI:AlphaSamledWidth>, <PropertyDef ignore_bw_ref_and_color_range -> OMFI:CDCI:IgnoreBWRefLevelAndColorRange>]¶
- class RGBADescriptor(root, object_id, entries)[source]¶
Bases:
DigitalImageDescriptorRGBA– RGB(A) image essence.- class_id: Optional[str] = 'RGBA'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef pixel_layout -> OMFI:RGBA:PixelLayout>, <PropertyDef pixel_structure -> OMFI:RGBA:PixelStructure>, <PropertyDef component_min_ref -> OMFI:RGBA:ComponentMinRef>, <PropertyDef component_max_ref -> OMFI:RGBA:ComponentMaxRef>, <PropertyDef has_comp_min_ref -> OMFI:RGBA:HasCompMinRef>, <PropertyDef has_comp_max_ref -> OMFI:RGBA:HasCompMaxRef>, <PropertyDef offset_to_frame_indexes -> OMFI:RGBA:OffsetToFrameIndexes>, <PropertyDef pixel_layout_size -> OMFI:RGBA:PixelLayoutSize>, <PropertyDef pixel_structure_size -> OMFI:RGBA:PixelStructureSize>, <PropertyDef alpha_min_ref -> OMFI:RGBA:AlphaMinRef>, <PropertyDef alpha_max_ref -> OMFI:RGBA:AlphaMaxRef>, <PropertyDef palette -> OMFI:RGBA:Palette>, <PropertyDef palette_size -> OMFI:RGBA:PaletteSize>, <PropertyDef palette_layout -> OMFI:RGBA:PaletteLayout>, <PropertyDef palette_layout_size -> OMFI:RGBA:PaletteLayoutSize>, <PropertyDef palette_structure -> OMFI:RGBA:PaletteStructure>, <PropertyDef palette_structure_size -> OMFI:RGBA:PaletteStructureSize>]¶
- class JPEGDescriptor(root, object_id, entries)[source]¶
Bases:
CDCIDescriptorJPED– Avid’s motion-JPEG resolutions (AVR, JFIF).The class dictionary of both samples declares
JPED -> CDCI. The quantisation tables are carried inline;JPEGTableIDnames a table Media Composer already knows, in which case they are omitted.- class_id: Optional[str] = 'JPED'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef jpeg_table_id -> OMFI:JPED:JPEGTableID>, <PropertyDef quantization_tables -> OMFI:JPED:QuantizationTables>, <PropertyDef quantization_tables_length -> OMFI:JPED:QuantizationTables Length>, <PropertyDef image_start_alignment -> OMFI:JPED:ImageStartAlignment>]¶
- class MPEGDescriptor(root, object_id, entries)[source]¶
Bases:
CDCIDescriptorMPGI– long-GOP MPEG picture essence (XDCAM and friends).The class dictionary of both samples declares
MPGI -> CDCI. Because the GOP means a frame is not independently decodable, the descriptor carries what a random-access seek needs: the GOP structure, the leading and trailing frames to discard, and a copy of the sequence header.- class_id: Optional[str] = 'MPGI'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mpeg_version -> OMFI:MPGI:MPEGVersion>, <PropertyDef is_mpeg1 -> OMFI:MPGI:isMPEG1>, <PropertyDef stream_type -> OMFI:MPGI:StreamType>, <PropertyDef profile_and_level -> OMFI:MPGI:ProfileAndLevel>, <PropertyDef gop_structure -> OMFI:MPGI:GOPStructure>, <PropertyDef min_gop_length -> OMFI:MPGI:omMPGIMinGOPLength>, <PropertyDef max_gop_length -> OMFI:MPGI:omMPGIMaxGOPLength>, <PropertyDef random_access -> OMFI:MPGI:RandomAccess>, <PropertyDef leading_discard -> OMFI:MPGI:LeadingDiscard>, <PropertyDef trailing_discard -> OMFI:MPGI:TrailingDiscard>, <PropertyDef sequence_header -> OMFI:MPGI:SequenceHdr>, <PropertyDef sequence_header_length -> OMFI:MPGI:SequenceHdrLen>, <PropertyDef offset_to_frame_indexes -> OMFI:MPGI:OffsetToFrameIndexes>]¶
- class TIFFDescriptor(root, object_id, entries)[source]¶
Bases:
DigitalImageDescriptorTIFD– TIFF stills and the older Avid TIFF-wrapped resolutions.IsContiguousandIsUniformare the pair that decides whether a frame can be found by arithmetic or needs the frame index.- class_id: Optional[str] = 'TIFD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef is_uniform -> OMFI:TIFD:IsUniform>, <PropertyDef is_contiguous -> OMFI:TIFD:IsContiguous>, <PropertyDef leading_lines -> OMFI:TIFD:LeadingLines>, <PropertyDef trailing_lines -> OMFI:TIFD:TrailingLines>, <PropertyDef jpeg_table_id -> OMFI:TIFD:JPEGTableID>, <PropertyDef first_ifd -> OMFI:TIFD:FirstIFD>, <PropertyDef summary -> OMFI:TIFD:Summary>, <PropertyDef buf_len -> OMFI:TIFD:BufLen>, <PropertyDef rle_desc -> OMFI:TIFD:RLEDesc>, <PropertyDef uncomp_desc -> OMFI:TIFD:UncompDesc>, <PropertyDef tiff_uniformness -> OMFI:TIFD:Uniformness>, <PropertyDef version -> OMFI:TIFD:Version>]¶
- class DVDescriptor(root, object_id, entries)[source]¶
Bases:
DigitalImageDescriptorDVRD– DV / DVCPRO essence.Property names carry Avid’s Hungarian
lprefix, which is preserved on the OMF side and dropped on the Python side.- class_id: Optional[str] = 'DVRD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef dv_id -> OMFI:DVRD:szID>, <PropertyDef dv_version -> OMFI:DVRD:lVersion>, <PropertyDef data_offset -> OMFI:DVRD:lDataOffset>, <PropertyDef index_offset -> OMFI:DVRD:lIndexOffset>, <PropertyDef data_rate -> OMFI:DVRD:lDataRate>, <PropertyDef field_count -> OMFI:DVRD:lFieldCount>, <PropertyDef is_pal -> OMFI:DVRD:lPAL>, <PropertyDef q_factor -> OMFI:DVRD:lQFactor>, <PropertyDef dyna_q -> OMFI:DVRD:lDynaQ>, <PropertyDef x_extent -> OMFI:DVRD:lXExtent>, <PropertyDef y_extent -> OMFI:DVRD:lYExtent>]¶
- class VideoDescriptor(root, object_id, entries)[source]¶
Bases:
DigitalImageDescriptorMDVI– Avid’s own video-media descriptor.Predates the OMF
DIDDraster model and describes the capture hardware’s view of the signal: which lines were captured, in what format, with what mask. Absent from both reference samples.- class_id: Optional[str] = 'MDVI'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef width -> OMFI:MDVI:Width>, <PropertyDef height -> OMFI:MDVI:Height>, <PropertyDef fields -> OMFI:MDVI:Fields>, <PropertyDef video_format -> OMFI:MDVI:VideoFormat>, <PropertyDef source_format -> OMFI:MDVI:SourceFormat>, <PropertyDef capture_mask -> OMFI:MDVI:CaptureMask>, <PropertyDef capture_shift -> OMFI:MDVI:CaptureShift>, <PropertyDef uniform -> OMFI:MDVI:Uniform>, <PropertyDef vc_id -> OMFI:MDVI:TypevcID>, <PropertyDef video_modifier -> OMFI:MDVI:TypeVideoModifier>]¶
- class VC1Descriptor(root, object_id, entries)[source]¶
Bases:
DigitalImageDescriptorVC1D– SMPTE VC-1 (Windows Media) picture essence.- class_id: Optional[str] = 'VC1D'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef profile -> OMFI:VC1D:Profile>, <PropertyDef level -> OMFI:VC1D:Level>, <PropertyDef average_bit_rate -> OMFI:VC1D:AverageBitRate>, <PropertyDef max_bit_rate -> OMFI:VC1D:MaxBitRate>, <PropertyDef max_gop -> OMFI:VC1D:MaxGOP>, <PropertyDef b_picture_count -> OMFI:VC1D:BPictureCount>, <PropertyDef identical_gop -> OMFI:VC1D:IdenticalGOP>, <PropertyDef single_sequence -> OMFI:VC1D:SingleSequence>, <PropertyDef coded_content_scanning -> OMFI:VC1D:CodedContentScanning>, <PropertyDef initialization_metadata -> OMFI:VC1D:InitializationMetadata>]¶
- class AudioDescriptor(root, object_id, entries)[source]¶
Bases:
FileDescriptorThe
MDAUproperty group, shared by every audio descriptor.MDAUis not a class – it never appears in the class dictionary and no object is ever tagged with it – but it is a property namespace thatPCMA,MPGA,WAVD,AIFDandSD2Dall draw on. Binding it once here meansdescriptor.num_channelsworks whatever the wrapper, which is what a caller actually wants to ask.- propertydefs: Sequence[PropertyDef] = [<PropertyDef num_channels -> OMFI:MDAU:NumChannels>, <PropertyDef number_of_channels -> OMFI:MDAU:NumberOfChannels>, <PropertyDef number_of_samples -> OMFI:MDAU:NumberOfSamples>, <PropertyDef bits_per_sample -> OMFI:MDAU:BitsPerSample>, <PropertyDef bytes_per_sample -> OMFI:MDAU:BytesPerSample>, <PropertyDef mdau_sampling_rate -> OMFI:MDAU:AudioSamplingRate>, <PropertyDef mdau_coding_format -> OMFI:MDAU:AudioCodingFormat>, <PropertyDef mdau_ref_level -> OMFI:MDAU:AudioRefLevel>, <PropertyDef mdau_dial_norm -> OMFI:MDAU:DialNorm>, <PropertyDef mdau_electro_spatial_formulation -> OMFI:MDAU:ElectroSpatialFormulation>, <PropertyDef mdau_locked -> OMFI:MDAU:Locked>, <PropertyDef clock_rate -> OMFI:MDAU:ClockRate>, <PropertyDef clock_divisor -> OMFI:MDAU:ClockDivisor>, <PropertyDef pull_down -> OMFI:MDAU:PullDown>]¶
- property sampling_rate¶
The audio sample rate, whichever spelling the wrapper used.
- class PCMADescriptor(root, object_id, entries)[source]¶
Bases:
AudioDescriptorPCMA– linear PCM audio, with BWF peak-envelope metadata.This is what Avid writes for the
.mxfaudio it manages itself, and it is the only audio descriptor present in either reference sample.- class_id: Optional[str] = 'PCMA'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef audio_sampling_rate -> OMFI:PCMA:AudioSamplingRate>, <PropertyDef block_alignment -> OMFI:PCMA:BlockAlignment>, <PropertyDef average_bytes_per_second -> OMFI:PCMA:AverageBytesPerSecond>, <PropertyDef sequence_offset -> OMFI:PCMA:SequenceOffset>, <PropertyDef audio_coding_format -> OMFI:PCMA:AudioCodingFormat>, <PropertyDef audio_ref_level -> OMFI:PCMA:AudioRefLevel>, <PropertyDef dial_norm -> OMFI:PCMA:DialNorm>, <PropertyDef electro_spatial_formulation -> OMFI:PCMA:ElectroSpatialFormulation>, <PropertyDef locked -> OMFI:PCMA:Locked>, <PropertyDef has_peak_envelope_data -> OMFI:PCMA:HasPeakEnvelopeData>, <PropertyDef peak_channel_count -> OMFI:PCMA:PeakChannelCount>, <PropertyDef peak_frame_count -> OMFI:PCMA:PeakFrameCount>, <PropertyDef peak_envelope_version -> OMFI:PCMA:PeakEnvelopeVersion>, <PropertyDef peak_envelope_format -> OMFI:PCMA:PeakEnvelopeFormat>, <PropertyDef peak_envelope_block_size -> OMFI:PCMA:PeakEnvelopeBlockSize>, <PropertyDef peak_envelope_timestamp -> OMFI:PCMA:PeakEnvelopeTimestamp>, <PropertyDef peak_of_peaks_offset -> OMFI:PCMA:PeakOfPeaksOffset>, <PropertyDef points_per_peak_value -> OMFI:PCMA:PointsPerPeakValue>, <PropertyDef version -> OMFI:PCMA:Version>, <PropertyDef peak_envelope_data -> OMFI:PCMA:PeakEnvelopeData>, <PropertyDef subframe_alignment -> OMFI:PCMA:SubframeAlignment>, <PropertyDef smpte_ebu_timestamp -> OMFI:PCMA:SmpteEbuTimestamp>, <PropertyDef timecode_frame_rate -> OMFI:PCMA:TimecodeFrameRate>]¶
- class MPEGAudioDescriptor(root, object_id, entries)[source]¶
Bases:
AudioDescriptorMPGA– MPEG audio (layer II / III).Everything about the sound itself is in the shared
MDAUgroup; whatMPGAadds is what a decoder needs to find a frame boundary.- class_id: Optional[str] = 'MPGA'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef bit_rate -> OMFI:MPGA:BitRate>, <PropertyDef subframe_alignment -> OMFI:MPGA:SubframeAlignment>, <PropertyDef origin -> OMFI:MPGA:Origin>, <PropertyDef version -> OMFI:MPGA:Version>]¶
- class WAVEDescriptor(root, object_id, entries)[source]¶
Bases:
AudioDescriptorWAVD– a Broadcast WAVE file.Summaryholds the file’s own RIFF chunks verbatim, which is where the originator, thebexttimestamp and the channel layout live – Avid keeps the header rather than re-describing it.Note the class split, which pyavb does not make: in OMF the descriptor is
WAVDand the media data isWAVE(WAVEData). pyavb folds them together underWAVEbecause the AVB container does; the MDB schema declares both names separately, so both are bound here.- class_id: Optional[str] = 'WAVD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef summary -> OMFI:WAVD:Summary>, <PropertyDef version -> OMFI:WAVD:Version>]¶
- class AIFCDescriptor(root, object_id, entries)[source]¶
Bases:
AudioDescriptorAIFD– an AIFF-C file. The AIFF twin ofWAVEDescriptor.- class_id: Optional[str] = 'AIFD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef summary -> OMFI:AIFD:Summary>, <PropertyDef data_pos -> OMFI:AIFD:MC:DataPos>, <PropertyDef version -> OMFI:AIFD:Version>]¶
- class SoundDesignerDescriptor(root, object_id, entries)[source]¶
Bases:
AudioDescriptorSD2D– Sound Designer II, the Pro Tools legacy format.Unusually, the schema gives this one both descriptor properties and a
Data/MobIDpair, so it doubles as its own media-data class.- class_id: Optional[str] = 'SD2D'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef sd2_num_channels -> OMFI:SD2D:NumChannels>, <PropertyDef sd2_bits_per_sample -> OMFI:SD2D:BitsPerSample>, <PropertyDef data -> OMFI:SD2D:Data>, <PropertyDef mob_id -> OMFI:SD2D:MobID>]¶
- class DataDescriptor(root, object_id, entries)[source]¶
Bases:
FileDescriptorDATD– essence that is neither picture nor sound.The frame-index properties are the same shape as
DIDD’s, because the problem is the same: a file of variable-size samples needs an index to be seekable.- class_id: Optional[str] = 'DATD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef is_filler -> OMFI:DATD:IsFiller>, <PropertyDef min_sample_size -> OMFI:DATD:MinSampleSize>, <PropertyDef max_sample_size -> OMFI:DATD:MaxSampleSize>, <PropertyDef first_frame_offset -> OMFI:DATD:FirstFrameOffset>, <PropertyDef offset_to_frame_indexes -> OMFI:DATD:OffsetToFrameIndexes>, <PropertyDef offset_to_frame_indexes_valid -> OMFI:DATD:IsOffsetToFrameIndexesValid>]¶
- class ANCDataDescriptor(root, object_id, entries)[source]¶
Bases:
DataDescriptorANCD– SMPTE 291 ancillary data: captions, AFD, timecode packets.The manifest lists which DIDs and SDIDs the stream carries, so a caller can tell a caption track from a metadata track without decoding it.
- class_id: Optional[str] = 'ANCD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef manifest -> OMFI:ANCD:ManifestArray>, <PropertyDef manifest_element_count -> OMFI:ANCD:ManifestElementCount>]¶
- class VBIDataDescriptor(root, object_id, entries)[source]¶
Bases:
DataDescriptorVBID– vertical-blanking-interval data, the analogue-era twin ofANCDataDescriptor.- class_id: Optional[str] = 'VBID'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef manifest -> OMFI:VBID:ManifestArray>, <PropertyDef manifest_element_count -> OMFI:VBID:ManifestElementCount>]¶
- class Rect(x, y, width, height)[source]¶
Bases:
objectOne of the
DIDDrectangles, as four exact rationals.Avid stores each rectangle as eight properties – an X, Y, width and height, each a separate numerator and denominator – so the geometry survives non-integer scaling. This groups them back up.
- x¶
- y¶
- width¶
- height¶
misc¶
The odds and ends: links, markers, list containers, class descriptors.
What these have in common is that they hang off other objects rather than
standing on their own. Two of them matter constantly in an MDB – MCBR
answers “which bin is this clip in?” and MCMR answers “where in the
timeline?” – and the rest are declared by the schema against the day a file
uses them.
- class BinLink(root, object_id, entries)[source]¶
Bases:
OMFObjectMCBR– mob to bin: which.avbbins reference this media.- class_id: Optional[str] = 'MCBR'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef bin_id_high -> OMFI:MCBR:MC:binID.high>, <PropertyDef bin_id_low -> OMFI:MCBR:MC:binID.low>, <PropertyDef bin_name_legacy -> OMFI:MCBR:MC:binName>, <PropertyDef bin_name_utf8 -> OMFI:MCBR:MC:binNameUTF8>, <PropertyDef ame_version -> OMFI:MCBR:AMEVersion>]¶
- class MobReference(root, object_id, entries)[source]¶
Bases:
OMFObjectMCMR– a mob reference with a position, joined by MobID.- class_id: Optional[str] = 'MCMR'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mob_id -> OMFI:MCMR:MC:MobID>, <PropertyDef position -> OMFI:MCMR:MC:Position>, <PropertyDef mob_id_bare -> OMFI:MCMR:MobID>, <PropertyDef position_bare -> OMFI:MCMR:Position>]¶
- property mob¶
The mob this reference names, or
Noneif the file has no such mob.
- class Marker(root, object_id, entries)[source]¶
Bases:
MobReferenceTMBC– a locator/marker: a coloured note pinned to a frame.Modelled as a
MobReferencesubclass because that is what pyavb found in the AVB container and the property sets agree. Note that the MDB class dictionary declaresTMBCandMCMRas separate roots with no parent, so this inheritance is pyavb’s reading rather than the file’s own claim; nothing depends on it, since properties are looked up by OMF name either way.- class_id: Optional[str] = 'TMBC'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef name -> OMFI:TMBC:Name>, <PropertyDef comp_offset -> OMFI:TMBC:MC:CompOffset>, <PropertyDef offset -> OMFI:TMBC:Offset>, <PropertyDef marker_attributes -> OMFI:TMBC:MC:Attributes>, <PropertyDef attrs -> OMFI:TMBC:Attrs>, <PropertyDef color -> OMFI:TMBC:MC:CarbonAPI::RGBColor>, <PropertyDef simple_color -> OMFI:TMBC:Color>, <PropertyDef parent -> OMFI:TMBC:Parent>, <PropertyDef handled_bad_control_codes -> OMFI:TMBC:MC:handledBadControlCodes>]¶
- class TimeCrumbList(root, object_id, entries)[source]¶
Bases:
OMFObjectTMCS– the list of markers (“crumbs”) on a track.- class_id: Optional[str] = 'TMCS'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef crumbs -> OMFI:TMCS:MC:Crumbs>, <PropertyDef num_crumbs -> OMFI:TMCS:MC:NumCrumbs>, <PropertyDef crumbs_bare -> OMFI:TMCS:Crumbs>, <PropertyDef num_crumbs_bare -> OMFI:TMCS:NumCrumbs>, <PropertyDef crumb -> OMFI:TMCS:Crumb>]¶
- class SortedList(root, object_id, entries)[source]¶
Bases:
OMFObjectSMLS– a fixed-stride list of records stored as one blob.ListItemsisListCountrecords ofItemSizebytes each rather than a list of objects, sorecords()slices it.FXPSinherits from this in the class dictionary of both samples.- class_id: Optional[str] = 'SMLS'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef list_items -> OMFI:SMLS:MC:ListItems>, <PropertyDef list_count -> OMFI:SMLS:MC:ListCount>, <PropertyDef item_size -> OMFI:SMLS:MC:ItemSize>, <PropertyDef entry_number -> OMFI:SMLS:MC:EntryNumber>]¶
- class ListItem(root, object_id, entries)[source]¶
Bases:
OMFObjectLITM– one entry of a list, carrying its payload as a blob.- class_id: Optional[str] = 'LITM'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef entry_data -> OMFI:LITM:MC:EntryData>]¶
- class ClassDescriptor(root, object_id, entries)[source]¶
Bases:
OMFObjectCLSD– one entry of HEAD’s class dictionary.The dictionary declares only Avid’s extension classes and their inheritance; built-in OMF1 classes are assumed known and never appear.
- class_id: Optional[str] = 'CLSD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef class_4cc -> OMFI:CLSD:ClassID>, <PropertyDef parent -> OMFI:CLSD:ParentClass>]¶
- class MediaFileLink(root, object_id, entries)[source]¶
Bases:
OMFObjectMFML– the file-level twin ofMSML.Where
MSMLnames the volume a mob’s media was last seen on,MFMLnames it for a single file, keyed by a 64-bit link UID split across two 32-bit properties.- class_id: Optional[str] = 'MFML'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef last_known_volume -> OMFI:MFML:LastKnownVolume>, <PropertyDef link_uid_high -> OMFI:MFML:LinkUIDHigh>, <PropertyDef link_uid_low -> OMFI:MFML:LinkUIDLow>, <PropertyDef track_type -> OMFI:MFML:TrackType>]¶
- class MediaFileBlock(root, object_id, entries)[source]¶
Bases:
OMFObjectMFMB– one contiguous run of bytes inside a media file.- class_id: Optional[str] = 'MFMB'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef byte_offset -> OMFI:MFMB:ByteOffset>, <PropertyDef byte_length -> OMFI:MFMB:ByteLength>, <PropertyDef is_slide -> OMFI:MFMB:IsSlide>]¶
- class ControlCode(root, object_id, entries)[source]¶
Bases:
OMFObjectCNSC– a control code with a rational value, used on control tracks.- class_id: Optional[str] = 'CNSC'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef control_code -> OMFI:CNSC:ControlCode>, <PropertyDef control_sub_code -> OMFI:CNSC:ControlSubCode>, <PropertyDef control_type_code -> OMFI:CNSC:ControlTypeCode>, <PropertyDef numerator -> OMFI:CNSC:Numerator>, <PropertyDef denominator -> OMFI:CNSC:Denominator>]¶
- class AttributeClip(root, object_id, entries)[source]¶
Bases:
OMFObjectATCP– a clip whose whole content is an attribute list.- class_id: Optional[str] = 'ATCP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef attributes -> OMFI:ATCP:Attributes>, <PropertyDef version -> OMFI:ATCP:Version>]¶
- class MediaStreamProject(root, object_id, entries)[source]¶
Bases:
OMFObjectMSP– project and library metadata attached to a media stream.- class_id: Optional[str] = 'MSP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef project_data -> OMFI:MSP:ProjectData>, <PropertyDef library_data -> OMFI:MSP:LibraryData>]¶
- class Domain(root, object_id, entries)[source]¶
Bases:
OMFObjectDOMN– a domain. Purpose unverified.Sits next to
DOML(DomainLocator) in the schema, which suggests the pair is a name and a reference to it, but nothing in either sample confirms that.- class_id: Optional[str] = 'DOMN'¶
OMF 4CC;
Noneon abstract bases
- class SoundDesignerLink(root, object_id, entries)[source]¶
Bases:
OMFObjectSDSL– purpose unverified.The neighbouring
SD2D(SoundDesignerDescriptor) makes a Sound Designer link the obvious reading, andMACLdeclaresSDSAddressandSDSMobIDproperties that would fit. Unconfirmed.- class_id: Optional[str] = 'SDSL'¶
OMF 4CC;
Noneon abstract bases
- class UserProperty(root, object_id, entries)[source]¶
Bases:
OMFObjectUSPR– purpose unverified.Most likely a user-defined property, by analogy with
AVUP(UserParameter), but the schema declares no properties for it and neither sample contains one.- class_id: Optional[str] = 'USPR'¶
OMF 4CC;
Noneon abstract bases
components¶
CPNT and its descendants – the things that occupy time on a track.
The hierarchy is OMF’s own:
Component (CPNT)
Clip (CLIP)
SourceClip (SCLP) the derivation link
Filler (FILL)
Timecode (TCCP)
Edgecode (ECCP) film edge numbers
TrackRef (TRKR)
ParamClip (PRCL) an animated parameter
ControlClip (CTRL) the older control-point form
Sequence (SEQU)
TrackGroup (TRKG) -- see :mod:`mdb.objects.trackgroups`
PRCL and CTRL carry their control points as flat, parallel properties
(NumPts plus per-point values) rather than as sub-objects, so the point
list is assembled by ParamClip.control_points() rather than being a
property in its own right.
- class Component(root, object_id, entries)[source]¶
Bases:
OMFObjectCPNT– anything with an edit rate and a track kind.- class_id: Optional[str] = 'CPNT'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef edit_rate -> OMFI:CPNT:EditRate>, <PropertyDef name -> OMFI:CPNT:Name>, <PropertyDef track_kind -> OMFI:CPNT:TrackKind>, <PropertyDef attributes -> OMFI:CPNT:Attributes>, <PropertyDef session_attrs -> OMFI:CPNT:SessionAttrs>, <PropertyDef effect_id -> OMFI:CPNT:EffectID>, <PropertyDef param_list -> OMFI:CPNT:ParamList>, <PropertyDef precomputed -> OMFI:CPNT:Precomputed>]¶
- class Clip(root, object_id, entries)[source]¶
Bases:
ComponentCLIP– a component with a duration.- class_id: Optional[str] = 'CLIP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef length -> OMFI:CLIP:Length>]¶
- class SourceClip(root, object_id, entries)[source]¶
Bases:
ClipSCLP– the derivation link.source_idnames the previous-generation mob by short UID; the OMF1 sentinel 0-0-0 means “this is the original”.- class_id: Optional[str] = 'SCLP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef source_id -> OMFI:SCLP:SourceID>, <PropertyDef source_position -> OMFI:SCLP:SourcePosition>, <PropertyDef source_track -> OMFI:SCLP:SourceTrack>]¶
- class Filler(root, object_id, entries)[source]¶
Bases:
ClipFILL– silence / black.- class_id: Optional[str] = 'FILL'¶
OMF 4CC;
Noneon abstract bases
- class Timecode(root, object_id, entries)[source]¶
Bases:
ClipTCCP– a timecode track’s start, rate and flags.- class_id: Optional[str] = 'TCCP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef start_tc -> OMFI:TCCP:StartTC>, <PropertyDef fps -> OMFI:TCCP:FPS>, <PropertyDef flags -> OMFI:TCCP:Flags>]¶
- class Edgecode(root, object_id, entries)[source]¶
Bases:
ClipECCP– film edge numbers, the film-side twin ofTCCP.Absent from both reference samples (an MDB indexes digital media, and film mobs arrive only on projects that captured from film). The property set is taken from the schema of both samples; the semantics are OMF 2.1’s.
- class_id: Optional[str] = 'ECCP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef start_ec -> OMFI:ECCP:StartEC>, <PropertyDef film_kind -> OMFI:ECCP:FilmKind>, <PropertyDef code_format -> OMFI:ECCP:CodeFormat>, <PropertyDef base_perf -> OMFI:ECCP:BasePerf>, <PropertyDef header -> OMFI:ECCP:Header>]¶
- class TrackRef(root, object_id, entries)[source]¶
Bases:
ClipTRKR– a reference to another track in the same mob.- class_id: Optional[str] = 'TRKR'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef relative_scope -> OMFI:TRKR:RelativeScope>, <PropertyDef relative_track -> OMFI:TRKR:RelativeTrack>]¶
- class Sequence(root, object_id, entries)[source]¶
Bases:
ComponentSEQU– an ordered list of components on one track.- class_id: Optional[str] = 'SEQU'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef components -> OMFI:SEQU:Sequence>]¶
- class ParamClip(root, object_id, entries)[source]¶
Bases:
_PointListPRCL– an animated effect parameter: a curve of control points.The value at each point can be an integer, a double or a user blob;
ValueTypesays which, andcontrol_points()returns whichever the file wrote. Absent from both reference samples – effects live in the.avbbin, and only their rendered media reaches the MDB.- class_id: Optional[str] = 'PRCL'¶
OMF 4CC;
Noneon abstract bases
- point_properties: tuple = (('offset_num', 'OMFI:PRCL:OffsetNum'), ('offset_den', 'OMFI:PRCL:OffsetDen'), ('time_scale', 'OMFI:PRCL:TimeScale'), ('value_integer', 'OMFI:PRCL:ValueInteger'), ('value_double', 'OMFI:PRCL:ValueDouble'), ('value_user', 'OMFI:PRCL:ValueUser'), ('pp_code', 'OMFI:PRCL:PPCode'), ('pp_type', 'OMFI:PRCL:PPType'), ('pp_integer', 'OMFI:PRCL:PPInteger'), ('pp_double', 'OMFI:PRCL:PPDouble'))¶
(python name, OMF property)pairs read once per point, in order.
- structural_properties: Sequence[str] = ('OMFI:PRCL:OffsetNum', 'OMFI:PRCL:OffsetDen', 'OMFI:PRCL:TimeScale', 'OMFI:PRCL:ValueInteger', 'OMFI:PRCL:ValueDouble', 'OMFI:PRCL:ValueUser', 'OMFI:PRCL:PPCode', 'OMFI:PRCL:PPType', 'OMFI:PRCL:PPInteger', 'OMFI:PRCL:PPDouble')¶
OMF property names this class reads structurally rather than through a
PropertyDef– the parallel per-point, per-band and per-keyframe columns, and the numerator/denominator pairs that make up a rectangle. They have no single sensible attribute name (there are n of each), so a method assembles them instead; listing them here keeps them visible toknown_properties()and to the coverage tests, so a property cannot be quietly forgotten.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef interp_kind -> OMFI:PRCL:InterpKind>, <PropertyDef extrap_kind -> OMFI:PCRL:ExtrapKind>, <PropertyDef value_type -> OMFI:PRCL:ValueType>, <PropertyDef value_range -> OMFI:PRCL:ValueRange>, <PropertyDef num_points -> OMFI:PRCL:NumPts>, <PropertyDef num_point_properties -> OMFI:PRCL:NumPPs>, <PropertyDef has_value -> OMFI:PRCL:HasValue>, <PropertyDef fields -> OMFI:PRCL:Fields>, <PropertyDef control_point_refs -> OMFI:PRCL:ControlPoints>, <PropertyDef point_property_refs -> OMFI:PRCL:PPs>]¶
- class ControlClip(root, object_id, entries)[source]¶
Bases:
_PointListCTRL– the older, rational-valued control curvePRCLreplaced.Same shape as
ParamClipbut with numerator/denominator values and an interpolation-quality (IQ) block. Absent from both reference samples.- class_id: Optional[str] = 'CTRL'¶
OMF 4CC;
Noneon abstract bases
- point_properties: tuple = (('offset_num', 'OMFI:CTRL:OffsetNum'), ('offset_den', 'OMFI:CTRL:OffsetDen'), ('time_scale', 'OMFI:CTRL:TimeScale'), ('value_num', 'OMFI:CTRL:ValueNum'), ('value_den', 'OMFI:CTRL:ValueDen'), ('pp_code', 'OMFI:CTRL:PPCode'), ('pp_num', 'OMFI:CTRL:PPNum'), ('pp_den', 'OMFI:CTRL:PPDen'))¶
(python name, OMF property)pairs read once per point, in order.
- structural_properties: Sequence[str] = ('OMFI:CTRL:OffsetNum', 'OMFI:CTRL:OffsetDen', 'OMFI:CTRL:TimeScale', 'OMFI:CTRL:ValueNum', 'OMFI:CTRL:ValueDen', 'OMFI:CTRL:PPCode', 'OMFI:CTRL:PPNum', 'OMFI:CTRL:PPDen', 'OMFI:INTL:IQKind0', 'OMFI:INTL:IQKind1', 'OMFI:INTL:IQKind2', 'OMFI:INTL:IQKind3', 'OMFI:INTL:IQKind4', 'OMFI:INTL:IQKind5', 'OMFI:INTL:IQKind6', 'OMFI:INTL:IQKind7', 'OMFI:INTL:IQKind8', 'OMFI:INTL:IQKind9', 'OMFI:INTL:IQNum0', 'OMFI:INTL:IQNum1', 'OMFI:INTL:IQNum2', 'OMFI:INTL:IQNum3', 'OMFI:INTL:IQNum4', 'OMFI:INTL:IQNum5', 'OMFI:INTL:IQNum6', 'OMFI:INTL:IQNum7', 'OMFI:INTL:IQNum8', 'OMFI:INTL:IQNum9', 'OMFI:INTL:IQDen0', 'OMFI:INTL:IQDen1', 'OMFI:INTL:IQDen2', 'OMFI:INTL:IQDen3', 'OMFI:INTL:IQDen4', 'OMFI:INTL:IQDen5', 'OMFI:INTL:IQDen6', 'OMFI:INTL:IQDen7', 'OMFI:INTL:IQDen8', 'OMFI:INTL:IQDen9')¶
OMF property names this class reads structurally rather than through a
PropertyDef– the parallel per-point, per-band and per-keyframe columns, and the numerator/denominator pairs that make up a rectangle. They have no single sensible attribute name (there are n of each), so a method assembles them instead; listing them here keeps them visible toknown_properties()and to the coverage tests, so a property cannot be quietly forgotten.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef interp_kind -> OMFI:CTRL:InterpKind>, <PropertyDef value -> OMFI:CTRL:Value>, <PropertyDef value_range -> OMFI:CTRL:ValueRange>, <PropertyDef num_points -> OMFI:CTRL:NumPts>, <PropertyDef num_point_properties -> OMFI:CTRL:NumPPs>, <PropertyDef num_iqs -> OMFI:CTRL:NumIQs>, <PropertyDef has_value -> OMFI:CTRL:HasValue>, <PropertyDef control_point_refs -> OMFI:CTRL:ControlPoints>, <PropertyDef point_property_refs -> OMFI:CTRL:PPs>, <PropertyDef iq_refs -> OMFI:CTRL:IQs>]¶
trackgroups¶
TRKG and its descendants – components made of parallel tracks.
MOBJ is the one that matters in an MDB: a mob is the unit of media
identity, and everything else joins to it. The rest of the family (selectors,
effects, time warps) belongs to composition editing and reaches an MDB only
when a rendered effect produces media of its own – see
mdb.objects.effects for those.
- class TrackGroup(root, object_id, entries)[source]¶
Bases:
ComponentTRKG– a component made of parallel tracks.- class_id: Optional[str] = 'TRKG'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef tracks -> OMFI:TRKG:Tracks>, <PropertyDef group_length -> OMFI:TRKG:GroupLength>, <PropertyDef mode -> OMFI:TRKG:MC:Mode>, <PropertyDef type_code -> OMFI:TRKG:TypeCode>, <PropertyDef numerator -> OMFI:TRKG:Numerator>, <PropertyDef denominator -> OMFI:TRKG:Denominator>, <PropertyDef num_scalars -> OMFI:TRKG:NumScalars>, <PropertyDef control_scalars -> OMFI:TRKG:ControlScalars>, <PropertyDef isolation -> OMFI:TRKG:Isolation>, <PropertyDef locks_suspended -> OMFI:TRKG:LocksSuspended>]¶
- class Mob(root, object_id, entries)[source]¶
Bases:
TrackGroupMOBJ– a media object: the unit of media identity.Everything joins on
mob_id.PhysicalMedialeads to the descriptor (codec, raster, rate) and from there to the locators that name the media file on disk.- class_id: Optional[str] = 'MOBJ'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mob_id -> OMFI:MOBJ:MobID>, <PropertyDef usage_code -> OMFI:MOBJ:UsageCode>, <PropertyDef physical_media -> OMFI:MOBJ:PhysicalMedia>, <PropertyDef start_position -> OMFI:MOBJ:StartPosition>, <PropertyDef last_modified -> OMFI:MOBJ:LastModified>, <PropertyDef creation_time -> OMFI:MOBJ:_CreationTime>]¶
- property descriptor: MediaDescriptor | None¶
- paths()[source]¶
Every distinct file path this mob’s locators name, UTF-8 preferred.
MSML links share the locator list but carry a volume rather than a path, so they contribute nothing here – see
volumes().
- source_clips()[source]¶
Every SCLP under this mob’s tracks (one level of sequence deep).
- Return type:
- derivation_chain(max_depth=32)[source]¶
Walk
SCLP:SourceIDupstream until the 0-0-0 sentinel.Cycles and runaway depth are guarded: a damaged file should not hang the caller.
- stream_links()[source]¶
The MSML volume links for this mob.
MSML is a locator subclass (
MSML -> TXTLin the class dictionary), so it hangs off the descriptor alongside the file locators – it is not found by scanning for a matching MobID, though it does carry a copy of one for the reverse lookup.- Return type:
- bin_links()[source]¶
The MCBR bin links for this mob.
MCBR carries no MobID. It is reached through the attribute tree:
MOBJ -> CPNT:Attributes -> ATTR -> ATTB('_ORG_BIN', kind=object) -> MCBR.
- class RepeatSet(root, object_id, entries)[source]¶
Bases:
TrackGroupRSET– Avid extension: a set of alternate representations.- class_id: Optional[str] = 'RSET'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef rep_set_type -> OMFI:RSET:repSetType>]¶
- class Track(root, object_id, entries)[source]¶
Bases:
OMFObjectTRAK– one slot of a track group.- class_id: Optional[str] = 'TRAK'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef component -> OMFI:TRAK:TrackComponent>, <PropertyDef label_number -> OMFI:TRAK:LabelNumber>, <PropertyDef opt_flags -> OMFI:TRAK:OptFlags>, <PropertyDef filler_proxy -> OMFI:TRAK:FillerProxy>, <PropertyDef attributes -> OMFI:TRAK:Attributes>, <PropertyDef session_attrs -> OMFI:TRAK:SessionAttrs>, <PropertyDef start_position -> OMFI:TRAK:StartPos>, <PropertyDef control_code -> OMFI:TRAK:ControlCode>, <PropertyDef control_sub_code -> OMFI:TRAK:ControlSubCode>, <PropertyDef lock_number -> OMFI:TRAK:LockNubmer>, <PropertyDef track_label -> OMFI:trkt:Track.trkLNum>, <PropertyDef track_type -> OMFI:trkt:Track.trkType>]¶
- property track_kind¶
- class Selector(root, object_id, entries)[source]¶
Bases:
TrackGroupSLCT– one track chosen from several alternatives.The classic use is a multi-camera group or an effect’s “before” leg:
selectedindexes intotracks, and the rest are kept but not played. Absent from both reference samples.- class_id: Optional[str] = 'SLCT'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef is_ganged -> OMFI:SLCT:IsGanged>, <PropertyDef selected -> OMFI:SLCT:SelectedTrack>]¶
effects¶
Effects: the TRKG descendants that transform their tracks.
None of these appears in either reference sample, and that is the expected
result rather than a gap – an effect lives in the .avb bin, and only its
rendered media reaches the MDB, as an ordinary mob with an ordinary
descriptor. They are defined here because the class dictionary of both
samples declares them, so a file that does carry one (a precompute written
back into the media folder, or a future Media Composer that indexes more)
reads as a typed object rather than as a bag of properties.
The inheritance below is the one the samples’ own class dictionary states:
TRKG -> TKFX -> PVOL
-> EQMB
-> ASPI
TRKG -> WARP -> STRB
TRAN -> TNFX
which differs from pyavb’s AVB reading in one place: pyavb makes MASK,
SPED and REPT WARP subclasses, and the MDB dictionary declares
only STRB. The others are still modelled as time warps here, with this
note, because the property sets agree and nothing dispatches on it.
- class TrackEffect(root, object_id, entries)[source]¶
Bases:
TrackGroupTKFX– the base for every rendered track effect.The
GlobalInfoblock is spelled with aTNFXprefix even on aTKFXobject, because the two classes share the structure and Avid named the properties after the first class to use them. Both spellings are bound.- class_id: Optional[str] = 'TKFX'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef left_length -> OMFI:TKFX:MC:LeftLength>, <PropertyDef right_length -> OMFI:TKFX:MC:RightLength>, <PropertyDef keyframes -> OMFI:TKFX:MC:KeyFrameList>, <PropertyDef trackman -> OMFI:TKFX:MC:TrackMan>, <PropertyDef force_software -> OMFI:TKFX:MC:ForceSoftware>, <PropertyDef never_hardware -> OMFI:TKFX:MC:NeverHardware>, <PropertyDef global_info -> OMFI:TKFX:MC:GlobalInfo>, <PropertyDef global_info_version -> OMFI:TKFX:MC:GlobalInfoVersion>, <PropertyDef info_version -> OMFI:TNFX:MC:GlobalInfoVersion>, <PropertyDef info_minor_version -> OMFI:TNFX:MC:GlobalInfoMinorVersion>, <PropertyDef info_current -> OMFI:TNFX:MC:GlobalInfo.kfCurrent>, <PropertyDef info_smooth -> OMFI:TNFX:MC:GlobalInfo.kfSmooth>, <PropertyDef info_color_item -> OMFI:TNFX:MC:GlobalInfo.colorItem>, <PropertyDef info_quality -> OMFI:TNFX:MC:GlobalInfo.quality>, <PropertyDef info_is_reversed -> OMFI:TNFX:MC:GlobalInfo.isReversed>, <PropertyDef info_aspect_on -> OMFI:TNFX:MC:GlobalInfo.aspectOn>, <PropertyDef info_unique_id_1 -> OMFI:TNFX:MC:GlobalInfo.UniqueId1>, <PropertyDef info_unique_id_2 -> OMFI:TNFX:MC:GlobalInfo.UniqueId2>]¶
- class PanVolumeEffect(root, object_id, entries)[source]¶
Bases:
TrackEffectPVOL– audio level and pan.LevelandPanare fixed-point integers, not dB and not a -1..1 float;level_dbconverts, and returnsNoneat silence rather than negative infinity.- class_id: Optional[str] = 'PVOL'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef level -> OMFI:PVOL:MC:Level>, <PropertyDef level_ex -> OMFI:PVOL:MC:LevelEx>, <PropertyDef pan -> OMFI:PVOL:MC:Pan>, <PropertyDef level_set -> OMFI:PVOL:MC:LevelSet>, <PropertyDef pan_set -> OMFI:PVOL:MC:PanSet>, <PropertyDef suppress_validation -> OMFI:PVOL:MC:SuppressValidation>, <PropertyDef supports_separate_gain -> OMFI:PVOL:MC:DoesSuprtSeprtClipG>, <PropertyDef is_trim_gain_effect -> OMFI:PVOL:MC:IsTrimGainEffect>]¶
- UNITY_LEVEL = 65536¶
Levelis stored as a fixed-point fraction of unity gain.
- class AudioSuitePluginEffect(root, object_id, entries)[source]¶
Bases:
TrackEffectASPI– a rendered AudioSuite (Pro Tools) plug-in.The plug-in’s own state is opaque:
bag_of_bitsand the per-chunkchunkfDataare the plug-in’s private format, and are exposed as bytes without interpretation.Two of this class’s property IDs collide with
FXPS’s in the schema of both samples (ASPI:tracksToAffectwithFXPS:ccNumParams, andASPI:renderingModewithFXPS:colorCorrection). Both bindings are kept by the container;mdb validatereports the collision.- class_id: Optional[str] = 'ASPI'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef num_plugins -> OMFI:ASPI:numOfPlugIns>, <PropertyDef plugin_refs -> OMFI:ASPI:omfiAudioSuitePlugIn>, <PropertyDef plugin_name -> OMFI:ASPI:plugInName>, <PropertyDef manufacturer_id -> OMFI:ASPI:plugInfManufacturerID>, <PropertyDef product_id -> OMFI:ASPI:plugInfProductID>, <PropertyDef plugin_id -> OMFI:ASPI:plugInfPlugInID>, <PropertyDef num_chunks -> OMFI:ASPI:plugInNumOfChunks>, <PropertyDef source_mob_id -> OMFI:ASPI:sourceMasterClipMobID>, <PropertyDef mark_in -> OMFI:ASPI:markInForSourceMasterClip>, <PropertyDef mark_out -> OMFI:ASPI:markOutForSourceMasterClip>, <PropertyDef tracks_to_affect -> OMFI:ASPI:tracksToAffect>, <PropertyDef rendering_mode -> OMFI:ASPI:renderingMode>, <PropertyDef padding_secs -> OMFI:ASPI:paddingSecs>, <PropertyDef preset_path -> OMFI:ASPI:presetPath>, <PropertyDef preset_path_length -> OMFI:ASPI:presetPathLength>, <PropertyDef bag_of_bits -> OMFI:ASPI:BagOfBits>]¶
- structural_properties: Sequence[str] = ('OMFI:ASPI:chunkfChunkID', 'OMFI:ASPI:chunkfChunkName', 'OMFI:ASPI:chunkfVersion', 'OMFI:ASPI:chunkfData', 'OMFI:ASPI:chunkfDataSize')¶
OMF property names this class reads structurally rather than through a
PropertyDef– the parallel per-point, per-band and per-keyframe columns, and the numerator/denominator pairs that make up a rectangle. They have no single sensible attribute name (there are n of each), so a method assembles them instead; listing them here keeps them visible toknown_properties()and to the coverage tests, so a property cannot be quietly forgotten.
- class EqualizerMultiBand(root, object_id, entries)[source]¶
Bases:
TrackEffectEQMB– the multi-band audio EQ.- class_id: Optional[str] = 'EQMB'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef num_bands -> OMFI:EQMB:AV:NumBands>, <PropertyDef band_refs -> OMFI:EQMB:AV:Bands>, <PropertyDef effect_enable -> OMFI:EQMB:AV:EffectEnable>, <PropertyDef filter_name -> OMFI:EQMB:AV:FilterName>, <PropertyDef suppress_validation -> OMFI:EQMB:AV:SuppressValidation>]¶
- class EqualizerBand(root, object_id, entries)[source]¶
Bases:
OMFObjectEQBD– one band of anEqualizerMultiBand.Declared as a class in the dictionary of both samples, so in a Bento container the bands are most likely separate objects reached through
EQMB:AV:Bands. pyavb reads them inline instead, because the AVB byte stream writes them that way – soEqualizerMultiBand.bands()handles both shapes and this class covers the object one.- class_id: Optional[str] = 'EQBD'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef type -> OMFI:EQBD:AV:BandType>, <PropertyDef freq -> OMFI:EQBD:AV:BandFreq>, <PropertyDef gain -> OMFI:EQBD:AV:BandGain>, <PropertyDef q -> OMFI:EQBD:AV:BandQ>, <PropertyDef enable -> OMFI:EQBD:AV:BandEnable>]¶
- class TimeWarp(root, object_id, entries)[source]¶
Bases:
TrackGroupWARP– the base for effects that change the rate of time.- class_id: Optional[str] = 'WARP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef phase_offset -> OMFI:WARP:PhaseOffset>, <PropertyDef warp_edit_rate -> OMFI:WARP:EditRate>, <PropertyDef version -> OMFI:WARP:Version>]¶
- class CaptureMask(root, object_id, entries)[source]¶
Bases:
TimeWarpMASK– the field-dropping mask used by film-to-video pulldown.Declared in neither sample’s class dictionary; modelled as a time warp on pyavb’s reading of the AVB container, where
MASK -> WARP.- class_id: Optional[str] = 'MASK'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef is_double -> OMFI:MASK:IsDouble>, <PropertyDef mask_bits -> OMFI:MASK:MaskBits>, <PropertyDef version -> OMFI:MASK:Version>]¶
- class StrobeEffect(root, object_id, entries)[source]¶
Bases:
TimeWarpSTRB– hold every n-th frame.STRB -> WARPin the class dictionary of both samples.- class_id: Optional[str] = 'STRB'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef strobe_value -> OMFI:STRB:MC:StrobeVal>]¶
- class MotionEffect(root, object_id, entries)[source]¶
Bases:
TimeWarpSPED– a speed change.The ratio is a plain numerator over denominator: 2/1 is double speed, 1/2 is half. Three of its four properties are misspelled
OMIFrather thanOMFIin the schema of both samples – Avid’s typo, and it is bound as written because that is what the file says.- class_id: Optional[str] = 'SPED'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef numerator -> OMFI:SPED:Numerator>, <PropertyDef denominator -> OMFI:SPED:Denominator>, <PropertyDef version -> OMFI:SPED:Version>, <PropertyDef offset_adjust -> OMIF:SPED:OffsetAdjust>, <PropertyDef source_param_list -> OMIF:SPED:SourceParamList>, <PropertyDef new_source_calculation -> OMIF:SPED:NewSourceCalculation>]¶
- class Repeat(root, object_id, entries)[source]¶
Bases:
TimeWarpREPT– loop the tracks below.Carries no properties of its own beyond version stamps: the repeat count falls out of the group length against the source length.
- class_id: Optional[str] = 'REPT'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef version -> OMFI:REPT:Version>]¶
- class Transition(root, object_id, entries)[source]¶
Bases:
TrackGroupTRAN– a transition between two adjacent components.cut_pointis where the cut would have been without the transition, which is what a conform needs in order to place it.- class_id: Optional[str] = 'TRAN'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef cut_point -> OMFI:TRAN:CutPoint>, <PropertyDef version -> OMFI:TRAN:Version>]¶
- class TransitionEffect(root, object_id, entries)[source]¶
Bases:
TransitionTNFX– a transition realised by an effect (a dissolve, a wipe).TNFX -> TRANin the class dictionary of both samples. Everything past the cut point is the sameGlobalInfoblockTKFXcarries, which is why the property names below share theTNFXprefix with it.- class_id: Optional[str] = 'TNFX'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef left_length -> OMFI:TNFX:MC:LeftLength>, <PropertyDef right_length -> OMFI:TNFX:MC:RightLength>, <PropertyDef keyframes -> OMFI:TNFX:MC:KeyFrameList>, <PropertyDef trackman -> OMFI:TNFX:MC:TrackMan>, <PropertyDef force_software -> OMFI:TNFX:MC:ForceSoftware>, <PropertyDef never_hardware -> OMFI:TNFX:MC:NeverHardware>, <PropertyDef global_info -> OMFI:TNFX:MC:GlobalInfo>, <PropertyDef info_version -> OMFI:TNFX:MC:GlobalInfoVersion>, <PropertyDef info_minor_version -> OMFI:TNFX:MC:GlobalInfoMinorVersion>, <PropertyDef info_current -> OMFI:TNFX:MC:GlobalInfo.kfCurrent>, <PropertyDef info_smooth -> OMFI:TNFX:MC:GlobalInfo.kfSmooth>, <PropertyDef info_color_item -> OMFI:TNFX:MC:GlobalInfo.colorItem>, <PropertyDef info_quality -> OMFI:TNFX:MC:GlobalInfo.quality>, <PropertyDef info_is_reversed -> OMFI:TNFX:MC:GlobalInfo.isReversed>, <PropertyDef info_aspect_on -> OMFI:TNFX:MC:GlobalInfo.aspectOn>, <PropertyDef info_unique_id_1 -> OMFI:TNFX:MC:GlobalInfo.UniqueId1>, <PropertyDef info_unique_id_2 -> OMFI:TNFX:MC:GlobalInfo.UniqueId2>]¶
- class InlineEqualizerBand(type=None, freq=None, gain=None, q=None, enable=None)[source]¶
Bases:
objectA band read from the flat, inline form.
Used when
EQMB:AV:Bandsholds no object references and the five band properties are written directly on the parent, one repetition per band. Duck-type compatible withEqualizerBandfor the five values.- type¶
- freq¶
- gain¶
- q¶
- enable¶
parameters¶
Effect parameters: PRIT, PRLS, AVUP, FXPS, GRFX.
A modern Avid effect keeps its settings as a PRLS list of PRIT
parameters, each identified by a GUID rather than by name, so the same
parameter survives being renamed in the UI. FXPS is the older, flat form:
one record per keyframe with every possible field present, which is why its
property list is forty-odd entries long and mostly empty in any given file.
None of these appears in either reference sample.
- class ParameterItem(root, object_id, entries)[source]¶
Bases:
OMFObjectPRIT– one effect parameter.Identified by
uuid, not by name:nameis a display label and may be absent or localised. A parameter that animates has no single value –control_trackpoints at thePRCLcurve instead, andmultiple_valuesays so.- class_id: Optional[str] = 'PRIT'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef uuid -> OMFI:PRIT:GUID>, <PropertyDef name -> OMFI:PRIT:Name>, <PropertyDef value -> OMFI:PRIT:Value>, <PropertyDef value_type -> OMFI:PRIT:ValueType>, <PropertyDef enabled -> OMFI:PRIT:Enabled>, <PropertyDef multiple_value -> OMFI:PRIT:MultipleValue>, <PropertyDef control_track -> OMFI:PRIT:ControlTrack>, <PropertyDef contributes_to_signature -> OMFI:PRIT:ContributesToSignature>, <PropertyDef id_high -> OMFI:PRIT:IDHigh>, <PropertyDef id_low -> OMFI:PRIT:IDLow>]¶
- class ParameterList(root, object_id, entries)[source]¶
Bases:
OMFObjectPRLS– the list ofPRITparameters belonging to one effect.- class_id: Optional[str] = 'PRLS'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef param_refs -> OMFI:PRLS:ParamItems>, <PropertyDef num_items -> OMFI:PRLS:NumItems>]¶
- class UserParameter(root, object_id, entries)[source]¶
Bases:
OMFObjectAVUP– a CoreFoundation-typed user parameter.The payload is opaque bytes plus a type GUID and its own byte order, which is how Avid round-trips plug-in settings whose structure it does not know.
- class_id: Optional[str] = 'AVUP'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef byte_order -> OMFI:AVUP:ByteOrder>, <PropertyDef type_id -> OMFI:AVUP:TypeID>, <PropertyDef data -> OMFI:AVUP:ValueData>, <PropertyDef data_size -> OMFI:AVUP:ValueDataSize>]¶
- class EffectParamList(root, object_id, entries)[source]¶
Bases:
SortedListFXPS– the older, flat keyframe list.FXPS -> SMLSin the class dictionary of both samples, so the keyframes themselves are a fixed-stride blob reachable throughrecords(). The named properties below are the per-keyframe fields, written once per keyframe; they are declaredmultisoobj.pos_xgives the whole track rather than just the last value.- class_id: Optional[str] = 'FXPS'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef original_length -> OMFI:FXPS:originalLength>, <PropertyDef window_offset -> OMFI:FXPS:omFXwindowOffset>, <PropertyDef keyframe_size -> OMFI:FXPS:keyFrameSize>, <PropertyDef num_keyframes -> OMFI:FXPS:numKeyFrames>, <PropertyDef attr_list -> OMFI:FXPS:attrList>, <PropertyDef attr_effect_id -> OMFI:FXPS:attrEffectID>, <PropertyDef attr_effect_id_len -> OMFI:FXPS:attrEffectIDLen>, <PropertyDef percent_time -> OMFI:FXPS:percentTime>, <PropertyDef level -> OMFI:FXPS:level>, <PropertyDef selected -> OMFI:FXPS:selected>, <PropertyDef enable_key_flags -> OMFI:FXPS:enableKeyFlags>, <PropertyDef pos_x -> OMFI:FXPS:posX>, <PropertyDef pos_y -> OMFI:FXPS:posY>, <PropertyDef floor_x -> OMFI:FXPS:xFloor>, <PropertyDef ceil_x -> OMFI:FXPS:xCeiling>, <PropertyDef floor_y -> OMFI:FXPS:yFloor>, <PropertyDef ceil_y -> OMFI:FXPS:yCeiling>, <PropertyDef scale_x -> OMFI:FXPS:xScale>, <PropertyDef scale_y -> OMFI:FXPS:yScale>, <PropertyDef crop_left -> OMFI:FXPS:cropLeft>, <PropertyDef crop_right -> OMFI:FXPS:cropRight>, <PropertyDef crop_top -> OMFI:FXPS:cropTop>, <PropertyDef crop_bottom -> OMFI:FXPS:cropBottom>, <PropertyDef box_left -> OMFI:FXPS:boxLeft>, <PropertyDef box_right -> OMFI:FXPS:boxRight>, <PropertyDef box_top -> OMFI:FXPS:boxTop>, <PropertyDef box_bottom -> OMFI:FXPS:boxBottom>, <PropertyDef box_x_scale -> OMFI:FXPS:boxLvl2Xscale>, <PropertyDef box_y_scale -> OMFI:FXPS:boxLvl2Yscale>, <PropertyDef box_x_pos -> OMFI:FXPS:FXboxLvl2Xpos>, <PropertyDef box_y_pos -> OMFI:FXPS:omFXboxLvl2Ypos>, <PropertyDef border_width -> OMFI:FXPS:borderWidth>, <PropertyDef border_soft -> OMFI:FXPS:borderSoft>, <PropertyDef spill_gain -> OMFI:FXPS:spillGain>, <PropertyDef spill_gain_2 -> OMFI:FXPS:spillSecondGain>, <PropertyDef spill_soft -> OMFI:FXPS:spillSoft>, <PropertyDef spill_soft_2 -> OMFI:FXPS:spillSecondSoft>, <PropertyDef colors -> OMFI:FXPS:colors>, <PropertyDef num_colors -> OMFI:FXPS:nColors>, <PropertyDef user_param -> OMFI:FXPS:userParam>, <PropertyDef user_param_size -> OMFI:FXPS:userParamSize>, <PropertyDef color_correction -> OMFI:FXPS:colorCorrection>, <PropertyDef cc_num_params -> OMFI:FXPS:ccNumParams>]¶
- class GraphicEffect(root, object_id, entries)[source]¶
Bases:
OMFObjectGRFX– an imported still or matte, held as a picture blob.- class_id: Optional[str] = 'GRFX'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef pict_data -> OMFI:MC:GRFX:PictData>, <PropertyDef pict_size -> OMFI:MC:GRFX:PictSize>, <PropertyDef vc_id -> OMFI:MC:GRFX:vcID>]¶
- class ColorCorrection(root, object_id, entries)[source]¶
Bases:
OMFObjectATRE– an effect reference carrying a colour-correction payload.The schema declares exactly one property for it, misspelled
EfffectIDwith three fs. Bound as written.- class_id: Optional[str] = 'ATRE'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef effect_id -> OMFI:ATRE:EfffectID>]¶
trackers¶
The tracker family: TKMN, TKDS, TKPS, TKDA, TKPA.
Media Composer’s stabiliser and corner-pin trackers store their analysis separately from the effect that consumes it, so the same tracking data can drive several parameters. The shape is:
TKMN (manager)
-> TKDS (data slots) -> TKDA (tracking data) -> tracker clips
-> TKPS (param slots) -> TKPA (tracked param)
The class dictionary of both reference samples declares all five as roots with no parent, and none of them appears in either sample. Settings blobs are left as bytes: they are Media Composer’s private serialisation, and guessing at their layout would be inventing rather than reading.
- class TrackerManager(root, object_id, entries)[source]¶
Bases:
OMFObjectTKMN– the root of one effect’s tracking setup.- class_id: Optional[str] = 'TKMN'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef data_slots -> OMFI:TKMN:TrackerDataSlots>, <PropertyDef param_slots -> OMFI:TKMN:TrackedParamSlots>]¶
- class TrackerDataSlot(root, object_id, entries)[source]¶
Bases:
OMFObjectTKDS– a slot holding one or moreTrackerDataanalyses.- class_id: Optional[str] = 'TKDS'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef num_data_slots -> OMFI:TKDS:NumDataSlots>, <PropertyDef tracker_data -> OMFI:TKDS:TrackerData>, <PropertyDef tracker_data_ids -> OMFI:TKDS:TrackerDataIDs>, <PropertyDef track_foreground -> OMFI:TKDAS:TrackForeground>]¶
- class TrackerParameterSlot(root, object_id, entries)[source]¶
Bases:
OMFObjectTKPS– a slot binding tracking data to the parameters it drives.- class_id: Optional[str] = 'TKPS'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef num_param_slots -> OMFI:TKPS:NumParamSlots>, <PropertyDef tracked_param -> OMFI:TKPS:TrackedParam>, <PropertyDef tracker_param_ids -> OMFI:TKPS:TrackerParamIDs>, <PropertyDef effect_settings -> OMFI:TKPS:EffectSettings>, <PropertyDef effect_settings_size -> OMFI:TKPS:EffectSettingsSize>]¶
- class TrackerData(root, object_id, entries)[source]¶
Bases:
OMFObjectTKDA– one tracker’s analysis: its settings and its clips.- class_id: Optional[str] = 'TKDA'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef num_tracker_clips -> OMFI:TKDA:NumTrackerClips>, <PropertyDef tracker_clips -> OMFI:TKDA:TrackerClip>, <PropertyDef tracker_clip_ids -> OMFI:TKDA:TrackerClipIDs>, <PropertyDef tracker_clip_version -> OMFI:TKDA:TrackerClipVersion>, <PropertyDef settings -> OMFI:TKDA:TrackerSettings>, <PropertyDef settings_size -> OMFI:TKDA:TrackerSettingsSize>, <PropertyDef smoothing -> OMFI:TKDA:TrackerSmoothing>, <PropertyDef jitter_removal -> OMFI:TKDA:TrackerJitterRemoval>, <PropertyDef filter_data_amount -> OMFI:TKDA:TrackerFilterDataAmt>, <PropertyDef offset_tracking -> OMFI:TKDA:TrackerOffsetTracking>]¶
- class TrackerParameter(root, object_id, entries)[source]¶
Bases:
OMFObjectTKPA– one parameter driven by tracking data.- class_id: Optional[str] = 'TKPA'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef settings -> OMFI:TKPA:ParamSettings>, <PropertyDef settings_size -> OMFI:TKPA:ParamSettingsSize>]¶
media¶
Media-data classes: essence carried inside the container.
An OMF file may embed its essence; an MDB never does – it is an index of
files on disk, which is why HEAD:MediaData is empty in both reference
samples and every class here is unused in them. They are bound because the
schema declares them, and because the same class names appear in OMF files
that a caller may hand to this reader by mistake: getting a typed
WAVEData back with an empty data property is a better answer than a
generic object.
Each of these joins to its mob by MobID value rather than by object reference,
the same way MSML does.
Note the naming split against pyavb: in OMF the descriptor and the media data
are separate classes (WAVD describes, WAVE holds), and both are
declared in the MDB schema. pyavb folds them together under the data-class
name because the AVB container does. The descriptors live in
mdb.objects.descriptors.
- class MediaData(root, object_id, entries)[source]¶
Bases:
OMFObjectMDAT– the base for embedded essence: a MobID and a payload.- class_id: Optional[str] = 'MDAT'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mob_id -> OMFI:MDAT:MobID>]¶
- data_property: Optional[str] = None¶
The OMF property this subclass keeps its payload in.
- property data¶
The payload bytes, or
Nonewhen the class carries none.
- class WAVEData(root, object_id, entries)[source]¶
Bases:
MediaDataWAVE– embedded Broadcast WAVE essence.Described by
WAVEDescriptor(WAVD).- class_id: Optional[str] = 'WAVE'¶
OMF 4CC;
Noneon abstract bases
- data_property: Optional[str] = 'OMFI:WAVE:Data'¶
The OMF property this subclass keeps its payload in.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mob_id -> OMFI:WAVE:MobID>, <PropertyDef wave_data -> OMFI:WAVE:Data>, <PropertyDef version -> OMFI:WAVE:Version>]¶
- class AIFCData(root, object_id, entries)[source]¶
Bases:
MediaDataAIFC– embedded AIFF-C essence.Described by
AIFCDescriptor(AIFD).- class_id: Optional[str] = 'AIFC'¶
OMF 4CC;
Noneon abstract bases
- data_property: Optional[str] = 'OMFI:AIFC:Data'¶
The OMF property this subclass keeps its payload in.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mob_id -> OMFI:AIFC:MobID>, <PropertyDef aifc_data -> OMFI:AIFC:Data>, <PropertyDef version -> OMFI:AIFC:Version>]¶
- class TIFFData(root, object_id, entries)[source]¶
Bases:
MediaDataTIFF– embedded TIFF essence.Described by
TIFFDescriptor(TIFD).- class_id: Optional[str] = 'TIFF'¶
OMF 4CC;
Noneon abstract bases
- data_property: Optional[str] = 'OMFI:TIFF:Data'¶
The OMF property this subclass keeps its payload in.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mob_id -> OMFI:TIFF:MobID>, <PropertyDef tiff_data -> OMFI:TIFF:Data>, <PropertyDef version -> OMFI:TIFF:Version>]¶
- class AvidMediaData(root, object_id, entries)[source]¶
Bases:
MediaDataMVC1– embedded essence in an Avid-private codec.- class_id: Optional[str] = 'MVC1'¶
OMF 4CC;
Noneon abstract bases
- data_property: Optional[str] = 'OMFI:MVC1:Data'¶
The OMF property this subclass keeps its payload in.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef mob_id -> OMFI:MVC1:MobID>, <PropertyDef mvc1_data -> OMFI:MVC1:Data>]¶
- class ImageData(root, object_id, entries)[source]¶
Bases:
MediaDataIDAT– embedded image essence, the generic form.- class_id: Optional[str] = 'IDAT'¶
OMF 4CC;
Noneon abstract bases
- data_property: Optional[str] = 'OMFI:IDAT:ImageData'¶
The OMF property this subclass keeps its payload in.
- propertydefs: Sequence[PropertyDef] = [<PropertyDef image_data -> OMFI:IDAT:ImageData>]¶
- class JPEGFrameIndex(root, object_id, entries)[source]¶
Bases:
OMFObjectJPEG– the frame index for motion-JPEG essence.Separate from
JPEGDescriptor(JPED): the descriptor says how to decode a frame, this says where each one starts.- class_id: Optional[str] = 'JPEG'¶
OMF 4CC;
Noneon abstract bases
- propertydefs: Sequence[PropertyDef] = [<PropertyDef frame_index -> OMFI:JPEG:FrameIndex>]¶