pub struct CompositionPlaylist {Show 20 fields
pub namespace: CplNamespace,
pub id: ImfUuid,
pub annotation: Option<LanguageString>,
pub issue_date: String,
pub issuer: Option<LanguageString>,
pub creator: Option<LanguageString>,
pub content_originator: Option<LanguageString>,
pub content_title: LanguageString,
pub content_kind: ContentKindElement,
pub content_version_list: Option<ContentVersionList>,
pub essence_descriptor_list: Option<EssenceDescriptorList>,
pub edit_rate: Option<EditRate>,
pub total_running_time: Option<String>,
pub locale_list: Option<LocaleList>,
pub extension_properties: Option<ExtensionProperties>,
pub composition_timecode: Option<CompositionTimecode>,
pub has_signer: bool,
pub has_signature: bool,
pub source_xml: Option<String>,
pub segment_list: SegmentList,
}Expand description
Root CPL structure — defines a complete IMF composition.
§Spec-required vs Option<T> policy (FIX-7 audit)
The parser is intentionally lenient: every spec-required element that
isn’t strictly necessary to construct a valid CompositionPlaylist
is exposed as Option<T> (or via a default = "…" serde attribute).
Missing-required-field violations are surfaced as catalogue diagnostics
by the validator (validate_cpl) rather than as parse errors, so a
caller can still inspect the parsed structure of a non-conformant CPL.
Field-by-field map against ST 2067-3 §6 / §7 (2013 / 2016 — the 2020 edition reuses the 2016 schema verbatim):
| Field | Type | Spec status |
|---|---|---|
id | ImfUuid | required §6.1 — parse error if missing |
annotation | Option<…> | optional §6.2 |
issue_date | String | required §6.3 — parse error if missing |
issuer | Option<…> | optional §6.4 |
creator | Option<…> | optional §6.5 |
content_originator | Option<…> | optional §6.6 |
content_title | LanguageString | required §6.7 — parse error if missing |
content_kind | concrete (default) | required §6.8 — default_content_kind |
content_version_list | Option<…> | optional §6.10 |
essence_descriptor_list | Option<…> | required per ST 2067-2 §6.1.5 — |
| parser-lenient; absence is reported by | ||
validate_cpl as Error | ||
edit_rate | Option<…> | required §6.13 — parser-lenient; absence |
reported by validate_cpl | ||
total_running_time | Option<String> | optional §6.14 |
locale_list | Option<…> | optional §6.15 |
extension_properties | Option<…> | optional §6.16 |
composition_timecode | Option<…> | optional §6.9 |
segment_list | SegmentList | required §6.17 — parse error if missing |
has_signer/has_signature | bool | reflect presence in raw XML (§8 signatures unparsed) |
source_xml | Option<String> | retained when parsed from XML; absent for JSON-deserialised |
Five fields are spec-required but stored as Option<T> (with default
on the serde side) to support the parser-lenient model:
content_kind (defaults via default_content_kind), content_version_list,
essence_descriptor_list, edit_rate, locale_list. The validator
surfaces missing-required findings against the ST 2067-3 prose.
Fields§
§namespace: CplNamespaceThe SMPTE spec version detected from the root xmlns of the CPL XML.
Set after deserialization by parse_cpl().
id: ImfUuid§annotation: Option<LanguageString>§issue_date: String§issuer: Option<LanguageString>§creator: Option<LanguageString>§content_originator: Option<LanguageString>§content_title: LanguageString§content_kind: ContentKindElement§content_version_list: Option<ContentVersionList>§essence_descriptor_list: Option<EssenceDescriptorList>§edit_rate: Option<EditRate>§total_running_time: Option<String>§locale_list: Option<LocaleList>§extension_properties: Option<ExtensionProperties>§composition_timecode: Option<CompositionTimecode>§has_signer: boolWhether the original CPL XML contained a <Signer> element.
Set by parse_cpl() from raw XML before namespace stripping.
has_signature: boolWhether the original CPL XML contained a <Signature> element.
Set by parse_cpl() from raw XML before namespace stripping.
source_xml: Option<String>The raw CPL XML as parsed, retained so callers running through
validate_cpl(&cpl) can transparently invoke the runtime-XSD
validator (which needs the unparsed source). Set by parse_cpl().
None when the struct was built via JSON deserialization or
manual construction.
segment_list: SegmentListTrait Implementations§
Source§impl Debug for CompositionPlaylist
impl Debug for CompositionPlaylist
Source§impl<'de> Deserialize<'de> for CompositionPlaylist
impl<'de> Deserialize<'de> for CompositionPlaylist
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for CompositionPlaylist
impl PartialEq for CompositionPlaylist
Source§fn eq(&self, other: &CompositionPlaylist) -> bool
fn eq(&self, other: &CompositionPlaylist) -> bool
self and other values to be equal, and is used by ==.