From 8d9fc785235ff3fd3a9e6ff5b7bc80f28285af1b Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 8 Apr 2025 10:47:24 -0700 Subject: [PATCH 01/29] Initial pass at adding IMF UG labels --- src/main/data/cpl-marker-labels.json | 667 +++++++++++++++++++++-- src/main/scripts/build.mjs | 17 +- src/main/templates/cpl-marker-labels.hbs | 6 +- 3 files changed, 637 insertions(+), 53 deletions(-) diff --git a/src/main/data/cpl-marker-labels.json b/src/main/data/cpl-marker-labels.json index afdf595..b4ef167 100644 --- a/src/main/data/cpl-marker-labels.json +++ b/src/main/data/cpl-marker-labels.json @@ -2,271 +2,848 @@ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFBT", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFBT" + } + ], "description": "First Frame of Bars and Tone", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFCB", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFCB" + } + ], "description": "First Frame of Commercial Blacks", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFCL", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFCL" + } + ], "description": "First Frame of Company/Production Logo", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFDL", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFDL" + } + ], "description": "First Frame of Distribution Logo", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFEC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFEC" + } + ], "description": "First Frame of End Credits. First displayable frame of content that contains any intensity of the End Credits (a non zero alpha value), which appear at the end of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFHS", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFHS" + } + ], "description": "First Frame of Head Slate", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFMC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFMC" + } + ], "description": "First displayable frame of content that contains any intensity of moving, rolling or scrolling credits (a non-zero alpha value), which appear at the end of the feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFOB", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFOB" + } + ], "description": "First Frame of Ratings Band. First displayable frame of content of the Rating Band, which is usually a slate at the beginning of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFOC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFOC" + } + ], "description": "First Frame of Composition. The first frame of a composition that is intended for display.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFOI", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFOI" + } + ], "description": "First Frame of Intermission.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFSP", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFS" + } + ], "description": "First Frame of Digital Sync Pop", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFTC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFTC" + } + ], "description": "First Frame of Title Credits. First displayable frame of content that contains any intensity of the Title Credits (a non zero alpha value), which appear at the beginning of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFTS", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFTS" + } + ], "description": "First Frame of Tail Slate", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FTXC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": " LTXC" + } + ], "description": "First Frame of Textless Title Credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FTXE", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LTXE" + } + ], "description": "First Frame of Textless End Credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FTXM", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFXM" + } + ], "description": "First Frame of Textless Material Segment", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFBT", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFBT" + } + ], "description": "Last Frame of Bars and Tone", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFCB", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFTB" + } + ], "description": "Last Frame of Commercial Blacks", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFCL", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFCL" + } + ], "description": "Last Frame of Company/Production Logo", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFDL", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFDL" + } + ], "description": "Last Frame of Distribution Logo", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFEC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFEC" + } + ], "description": "Last Frame of End Credits. Last displayable frame of content that contains any intensity of the End Credits (a non zero alpha value), which appear at the end of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFHS", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFHS" + } + ], "description": "Last Frame of Head Slate", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFMC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFMC" + } + ], "description": "Last displayable frame of content that contains any intensity of moving, rolling or scrolling credits (a non-zero alpha value), which appear at the end of the feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFOB", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFOB" + } + ], "description": "Last Frame of Ratings Band. Last displayable frame of content of the Rating Band, which is usually a slate at the beginning of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFOC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFOC" + } + ], "description": "Last Frame of Composition. The last frame of a composition that is intended for display.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFOI", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFOI" + } + ], "description": "Last Frame of Intermission.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFSP", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFSP" + } + ], "description": "Last Frame of Digital Sync Pop", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFTC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFTC" + } + ], "description": "Last Frame of Title Credits. Last displayable frame of content that contains any intensity of the Title Credits (a non zero alpha value), which appear at the beginning of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFTS", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFTS" + } + ], "description": "Last Frame of Tail Slate", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LTXC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FTXC" + } + ], "description": "Last frame of Textless Title Credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LTXE", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/20201320#standard-markers", + "label": "FTXE" + } + ], "description": "Last Frame of Textless End Credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LTXM", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FTXM" + } + ], "description": "Last frame of Textless Material Segment", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FPCI", + "seeAlso": [], "description": "Fixed Point Candidate Insertion. Indicates possible point in the timeline where it would be allowable to insert content downstrean. This is for material that may not have commercial blacks, but could indicate a candidate point where a commercial could be inserted.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFCO", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFCO" + } + ], "description": "First Frame of Candidate Overlay. First frame of a sequence of frames where overlays, e.g. commercial overlays, may be placed.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFCO", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFCO" + } + ], "description": "Last Frame of Candidate Overlay. Last frame of a sequence of frames where overlays, e.g. commercial overlays, may be placed.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFOA", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFOA" + } + ], "description": "Audio First Frame. First frame of audio ring-in/ring-out where the video is in black.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFOA", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "" + } + ], "description": "Audio Last Frame. Last frame of audio ring-in/ring-out where the video is in black.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2016#standard-markers", "label": "FFDC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2016#standard-markers", + "label": "LFDC" + } + ], "description": "First Frame of Dubbing Credits. First displayable frame of content that contains any intensity of dubbing credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2016#standard-markers", "label": "LFDC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2016#standard-markers", + "label": "FFDC" + } + ], "description": "Last Frame of Dubbing credits: Last displayable frame of content that contains any intensity of dubbing credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "FFEI", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "LFEI" + } + ], "description": "First Frame of Episode Intro", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "FFER", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "LFER" + } + ], "description": "First Frame of Episode Recap", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "FFUN", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "LFUN" + } + ], "description": "First Frame of Up Next", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "LFEI", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "FFEI" + } + ], "description": "Last Frame of Episode Intro", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "LFER", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "FFER" + } + ], "description": "Last Frame of Episode Recap", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "LFUN", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "FFUN" + } + ], "description": "Last Frame of Up Next", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" + }, + { + "label": "FFCreditScene", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFCreditScene" + } + ], + "description": "First Frame of Credit Scene – A scene embedded in the credits, typically closing credits. This can be mid-credit or post-credit.", + "authority": "IMF UG" + }, + { + "label": "LFCreditScene", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFCreditScene" + } + ], + "description": "Last frame of Credit Scene – A scene embedded in the credits, typically closing credits. This can be mid-credit or post-credit.", + "authority": "IMF UG" + }, + { + "label": "FFRecap", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFRecap" + } + ], + "description": "First Frame of Recap – A recap of an episode, season, series/show, or other work. This applies to recaps leadin or trailing recaps rather than standalone recaps.", + "authority": "IMF UG" + }, + { + "label": "LFRecap", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFRecap" + } + ], + "description": "Last Frame of Recap – A recap of an episode, season, series/show, or other work. This applies to recaps leadin or trailing recaps rather than standalone recaps.", + "authority": "IMF UG" + }, + { + "label": "FFTease", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFTease" + } + ], + "description": "First Frame of Tease – A tease or other advertisement for an episode, season, series/show, or other work. This applies to recaps leadin or trailing teases rather than standalone recaps.", + "authority": "IMF UG" + }, + { + "label": "LFTease", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFTease" + } + ], + "description": "Last Frame of Tease – A tease or other advertisement for an episode, season, series/show, or other work. This applies to recaps leadin or trailing teases rather than standalone recaps.", + "authority": "IMF UG" + }, + { + "label": "FFAd", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFAd" + } + ], + "description": "First Frame of Ad – An advertisement other than Tease", + "authority": "IMF UG" + }, + { + "label": "LFAd", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFAd" + } + ], + "description": "Last Frame of Ad – An advertisement other than Tease", + "authority": "IMF UG" + }, + { + "label": "FFLogo", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFLogo" + } + ], + "description": "First Frame of Logo – Logos other than Company/Production or Distribution. For example, Network, Distributor, or Platform", + "authority": "IMF UG" + }, + { + "label": "LFLogo", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFLogo" + } + ], + "description": "Last Frame of Logo – Logos other than Company/Production or Distribution. For example, Network, Distributor, or Platform", + "authority": "IMF UG" + }, + { + "label": "FFAltEnding", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFAltEnding" + } + ], + "description": "First Frame of Alternate ending – An alternate ending", + "authority": "IMF UG" + }, + { + "label": "LFAltEnding", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFAltEnding" + } + ], + "description": "Last Frame of Alternate ending – An alternate ending", + "authority": "IMF UG" + }, + { + "label": "FFAddlCredits", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFAddlCredits" + } + ], + "description": "First Frame of Extra credits – Additional credits.", + "authority": "IMF UG" + }, + { + "label": "LFAddlCredits", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFAddlCredits" + } + ], + "description": "Last Frame of Extra credits – Additional credits.", + "authority": "IMF UG" + }, + { + "label": "FFAddlGraphics", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFAddlGraphics" + } + ], + "description": "First Frame of Additional graphics – Additional graphics", + "authority": "IMF UG" + }, + { + "label": "LFAddlGraphics", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFAddlGraphics" + } + ], + "description": "Last Frame of Additional graphics – Additional graphics", + "authority": "IMF UG" + }, + { + "label": "FFCompliance", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFCompliance" + } + ], + "description": "First Frame of Compliance event – Period of time that contains content not meeting some compliance standards (e.g., nudity, smoking, or language)", + "authority": "IMF UG" + }, + { + "label": "LFCompliance", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFCompliance" + } + ], + "description": "Last Frame of Compliance event – Period of time that contains content not meeting some compliance standards (e.g., nudity, smoking, or language)", + "authority": "IMF UG" + }, + { + "label": "FFTitleCard", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFTitleCard" + } + ], + "description": "First Frame of Title Card –The shows title graphic found within the 1st segment of a program. Could overlap with Opening sequence.", + "authority": "IMF UG" + }, + { + "label": "LFTitleCard", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFTitleCard" + } + ], + "description": "Last Frame of Title Card –The shows title graphic found within the 1st segment of a program. Could overlap with Opening sequence.", + "authority": "IMF UG" + }, + { + "label": "FFLS", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFLS" + } + ], + "description": "First Frame of First/Last frame of Localization Sequence/Segement/Shot that contains any video that is localized", + "authority": "IMF UG" + }, + { + "label": "LFLS", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFLS" + } + ], + "description": "First Frame of First/Last frame of Localization Sequence/Segement/Shot that contains any video that is localized", + "authority": "IMF UG" + }, + { + "label": "FFOT", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFOT" + } + ], + "description": "First Frame of First/Last frame of Tag that contains any sequence of credit content (mark-in/mark-out for credit sequence(tag))", + "authority": "IMF UG" + }, + { + "label": "LFOT", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFOT" + } + ], + "description": "First Frame of First/Last frame of Tag that contains any sequence of credit content (mark-in/mark-out for credit sequence(tag))", + "authority": "IMF UG" + }, + { + "label": "FFCallToAction", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFCallToAction" + } + ], + "description": "First Frame of Ad contains call to action like a web link \"visit www.savethewhales.org\"", + "authority": "IMF UG" + }, + { + "label": "LFCallToAction", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFCallToAction" + } + ], + "description": "First Frame of Ad contains call to action like a web link \"visit www.savethewhales.org\"", + "authority": "IMF UG" } ] \ No newline at end of file diff --git a/src/main/scripts/build.mjs b/src/main/scripts/build.mjs index a93dd86..fa890d8 100644 --- a/src/main/scripts/build.mjs +++ b/src/main/scripts/build.mjs @@ -47,23 +47,30 @@ if (!register) { const scopes = new Map(); for (const entry of register) { if (entry.scope === undefined) { - throw "Missing scope in entry"; + throw "Missing scope property"; } if (entry.label === undefined) { - throw "Missing label in entry"; + throw "Missing label property"; } if (entry.description === undefined) { - throw "Missing description in entry"; + throw "Missing description property"; } - if (entry.definingDocument === undefined) { - throw "Missing definingDocument in entry"; + if (entry.authority === undefined) { + throw "Missing authority property"; + } + if (entry.seeAlso === undefined) { + throw "Missing seeAlso property"; } let labels = scopes.get(entry.scope); if (labels === undefined) { labels = []; scopes.set(entry.scope, labels); } + if (labels.some((e) => e.label === entry.label)) { + throw `Duplicate label: ${entry.scope} ${entry.label}`; + } labels.push(entry); + } diff --git a/src/main/templates/cpl-marker-labels.hbs b/src/main/templates/cpl-marker-labels.hbs index 3c500f5..f465d4e 100644 --- a/src/main/templates/cpl-marker-labels.hbs +++ b/src/main/templates/cpl-marker-labels.hbs @@ -36,7 +36,7 @@ Label Description - Defining document + Where is it defined? {{#each scopes}} @@ -45,10 +45,10 @@ scope: {{scope}} {{#each labels}} - + {{label}} {{description}} - {{definingDocument}} + {{authority}} {{/each}} From a80dcfd0b6c2bc03883e989295e0550f78050bd4 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 8 Apr 2025 11:08:23 -0700 Subject: [PATCH 02/29] Add seeAlson --- src/main/data/cpl-marker-labels.json | 12 ++++++------ src/main/resources/static/main.css | 7 ++++++- src/main/scripts/build.mjs | 23 +++++++++++++++++++++-- src/main/templates/cpl-marker-labels.hbs | 8 +++++++- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/main/data/cpl-marker-labels.json b/src/main/data/cpl-marker-labels.json index b4ef167..c52053a 100644 --- a/src/main/data/cpl-marker-labels.json +++ b/src/main/data/cpl-marker-labels.json @@ -125,7 +125,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": "LFS" + "label": "LFSP" } ], "description": "First Frame of Digital Sync Pop", @@ -161,7 +161,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": " LTXC" + "label": "LTXC" } ], "description": "First Frame of Textless Title Credits", @@ -185,7 +185,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": "LFXM" + "label": "LTXM" } ], "description": "First Frame of Textless Material Segment", @@ -209,7 +209,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": "FFTB" + "label": "FFCB" } ], "description": "Last Frame of Commercial Blacks", @@ -364,7 +364,7 @@ "label": "LTXE", "seeAlso": [ { - "scope": "http://www.smpte-ra.org/schemas/2067-3/20201320#standard-markers", + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FTXE" } ], @@ -432,7 +432,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": "" + "label": "FFOA" } ], "description": "Audio Last Frame. Last frame of audio ring-in/ring-out where the video is in black.", diff --git a/src/main/resources/static/main.css b/src/main/resources/static/main.css index 1962c72..2e1835c 100644 --- a/src/main/resources/static/main.css +++ b/src/main/resources/static/main.css @@ -2,6 +2,7 @@ body { overflow-x: hidden; font-family: Arial, Helvetica, sans-serif; margin: auto; + line-height: 125%; } /* toolbar */ @@ -72,7 +73,11 @@ footer { } #register th:nth-child(3) { - width: 30%; + width: 10%; +} + +#register th:nth-child(4) { + width: 20%; } #register tbody tr:nth-child(even) { diff --git a/src/main/scripts/build.mjs b/src/main/scripts/build.mjs index fa890d8..f3d347d 100644 --- a/src/main/scripts/build.mjs +++ b/src/main/scripts/build.mjs @@ -66,13 +66,32 @@ for (const entry of register) { labels = []; scopes.set(entry.scope, labels); } + + /* check for duplicate labels */ if (labels.some((e) => e.label === entry.label)) { throw `Duplicate label: ${entry.scope} ${entry.label}`; } labels.push(entry); - } +/* validate seeAlso property */ +for (const entry of register) { + for (const ref of entry.seeAlso) { + if (ref.scope === undefined) { + throw "Missing seeAlso scope property"; + } + if (ref.label === undefined) { + throw "Missing seeAlso label property"; + } + const ref_scope = scopes.get(ref.scope); + if (ref_scope === undefined) { + throw `Unknown seeAlso scope: ${ref.scope}`; + } + if (!ref_scope.find((e) => e.label === ref.label)) { + throw `Unknown seeAlso label at ${entry.label}: ${ref.label}`; + } + } +} /* get the version field */ let version = "Unknown version" @@ -98,7 +117,7 @@ if (!template) { var html = template({ "version": version, - "scopes" : Array.from(scopes.entries(), ([scope, value]) => ({scope: scope, labels: value})), + "scopes": Array.from(scopes.entries(), ([scope, value]) => ({ scope: scope, labels: value })), }); writeFileSync(join(BUILD_PATH, PAGE_SITE_PATH), html, 'utf8'); diff --git a/src/main/templates/cpl-marker-labels.hbs b/src/main/templates/cpl-marker-labels.hbs index f465d4e..3ae0075 100644 --- a/src/main/templates/cpl-marker-labels.hbs +++ b/src/main/templates/cpl-marker-labels.hbs @@ -36,18 +36,24 @@ Label Description + See also Where is it defined? {{#each scopes}} - scope: {{scope}} + scope: {{scope}} {{#each labels}} {{label}} {{description}} + + {{#each seeAlso}} + {{label}} + {{/each}} + {{authority}} {{/each}} From 1a52be25ab6a30db5aef196da7a9a030d384b00e Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 18:34:11 -0700 Subject: [PATCH 03/29] Update CI --- .github/workflows/main.yml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 96a95eb..a1c8e64 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,6 +1,6 @@ name: build and test -on: push +on: [push, pull_request] jobs: build: @@ -9,16 +9,41 @@ jobs: - uses: actions/checkout@v3 with: submodules: recursive + - uses: actions/setup-node@v4 with: node-version: '20' + - run: npm install + - run: npm run build - id: deployment uses: actions/upload-pages-artifact@v3 with: path: build/ + artifact: + if: github.event_name == 'pull_request' + steps: + - uses: markwilson/html2pdf@v1.0 + with: + htmlPath: build/index.html + pdfName: build/register.pdf + + - name: Upload the PDF as an artifact + id: pdf-artifact + uses: actions/upload-artifact@v4 + with: + name: register + path: build/register.pdf + + - name: Add artifact links to the pull request + if: steps.finder + uses: marocchino/sticky-pull-request-comment@v2 + with: + message: | + Rendered register: <${{ steps.pdf-artifact.outputs.artifact-url}}> + deploy: if: github.ref_name == github.event.repository.default_branch environment: From 80f0777e06e697eb0b2e1ef326fab5cd9d382aad Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 18:35:18 -0700 Subject: [PATCH 04/29] Fix CI --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a1c8e64..acf1411 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -23,6 +23,8 @@ jobs: path: build/ artifact: + runs-on: ubuntu-latest + needs: build if: github.event_name == 'pull_request' steps: - uses: markwilson/html2pdf@v1.0 From cf5c91dabea3d411dfb78f2767357f73e1a4de85 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:13:42 -0700 Subject: [PATCH 05/29] Fix CI --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index acf1411..325fdc4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,7 +40,6 @@ jobs: path: build/register.pdf - name: Add artifact links to the pull request - if: steps.finder uses: marocchino/sticky-pull-request-comment@v2 with: message: | From 13322774baf0eb9fe221252e9cb76464a4fe70c5 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:21:59 -0700 Subject: [PATCH 06/29] Fix CI --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 325fdc4..eece218 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,7 +30,7 @@ jobs: - uses: markwilson/html2pdf@v1.0 with: htmlPath: build/index.html - pdfName: build/register.pdf + pdfName: build/register - name: Upload the PDF as an artifact id: pdf-artifact From 00c41d86a001f11088261856e47656b32e3393e5 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:34:51 -0700 Subject: [PATCH 07/29] Fix CI --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index eece218..f8e7202 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,10 +27,10 @@ jobs: needs: build if: github.event_name == 'pull_request' steps: - - uses: markwilson/html2pdf@v1.0 + - uses: ferdinandkeller/html-to-pdf-action@v2 with: - htmlPath: build/index.html - pdfName: build/register + - source-path: build/index.html + - destination-path: build/register.pdf - name: Upload the PDF as an artifact id: pdf-artifact From a7207d6d8ea6afc3cbfa9ccd6d3fd6c2bb6ab57a Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:36:09 -0700 Subject: [PATCH 08/29] Fix CI --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f8e7202..106b281 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,8 +29,8 @@ jobs: steps: - uses: ferdinandkeller/html-to-pdf-action@v2 with: - - source-path: build/index.html - - destination-path: build/register.pdf + source-path: build/index.html + destination-path: build/register.pdf - name: Upload the PDF as an artifact id: pdf-artifact From bb5f7abcb367f82b2d6a7ea232b3a6e2e91696cf Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:40:05 -0700 Subject: [PATCH 09/29] Fix CI --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 106b281..55bb51e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,10 +27,10 @@ jobs: needs: build if: github.event_name == 'pull_request' steps: - - uses: ferdinandkeller/html-to-pdf-action@v2 + - uses: fifsky/html-to-pdf-action@master with: - source-path: build/index.html - destination-path: build/register.pdf + htmlFile: ./build/index.html + outputFile: ./build/register.pdf - name: Upload the PDF as an artifact id: pdf-artifact From 302616982a9b8eedcca5ee43872c2db21e1f2b27 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:41:13 -0700 Subject: [PATCH 10/29] Fix CI --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 55bb51e..e1e4c6e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,14 +30,14 @@ jobs: - uses: fifsky/html-to-pdf-action@master with: htmlFile: ./build/index.html - outputFile: ./build/register.pdf + outputFile: register.pdf - name: Upload the PDF as an artifact id: pdf-artifact uses: actions/upload-artifact@v4 with: name: register - path: build/register.pdf + path: register.pdf - name: Add artifact links to the pull request uses: marocchino/sticky-pull-request-comment@v2 From 5176ea75c8dd7cbc1acebdfb662cad2f3f096442 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:51:55 -0700 Subject: [PATCH 11/29] Fix CI --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e1e4c6e..bb6c7cc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,9 +27,10 @@ jobs: needs: build if: github.event_name == 'pull_request' steps: + - uses: actions/download-artifact@v4 - uses: fifsky/html-to-pdf-action@master with: - htmlFile: ./build/index.html + htmlFile: build/index.html outputFile: register.pdf - name: Upload the PDF as an artifact From 810b60b78f125556bbf1481930d738bc20755387 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 20:25:36 -0700 Subject: [PATCH 12/29] Fix CI --- .github/workflows/main.yml | 43 ++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bb6c7cc..2807a96 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,34 +17,31 @@ jobs: - run: npm install - run: npm run build + - id: deployment uses: actions/upload-pages-artifact@v3 with: path: build/ - artifact: - runs-on: ubuntu-latest - needs: build - if: github.event_name == 'pull_request' - steps: - - uses: actions/download-artifact@v4 - - uses: fifsky/html-to-pdf-action@master - with: - htmlFile: build/index.html - outputFile: register.pdf - - - name: Upload the PDF as an artifact - id: pdf-artifact - uses: actions/upload-artifact@v4 - with: - name: register - path: register.pdf - - - name: Add artifact links to the pull request - uses: marocchino/sticky-pull-request-comment@v2 - with: - message: | - Rendered register: <${{ steps.pdf-artifact.outputs.artifact-url}}> + - uses: fifsky/html-to-pdf-action@master + if: github.event_name == 'pull_request' + with: + htmlFile: build/index.html + outputFile: build/register.pdf + + - name: Upload the PDF as an artifact + if: github.event_name == 'pull_request' + id: pdf-artifact + uses: actions/upload-artifact@v4 + with: + name: register + path: build/register.pdf + + - name: Add artifact links to the pull request + uses: marocchino/sticky-pull-request-comment@v2 + with: + message: | + Rendered register: <${{ steps.pdf-artifact.outputs.artifact-url}}> deploy: if: github.ref_name == github.event.repository.default_branch From 3095b0de0f4ca8592df256c10b37f65bf0f29d2b Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 20:25:51 -0700 Subject: [PATCH 13/29] Fix CI --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2807a96..604494a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,6 +38,7 @@ jobs: path: build/register.pdf - name: Add artifact links to the pull request + if: github.event_name == 'pull_request' uses: marocchino/sticky-pull-request-comment@v2 with: message: | From 98c2be363aefbb2bb11a9c8dd2b14ae28f30d999 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Thu, 19 Jun 2025 22:39:38 -0700 Subject: [PATCH 14/29] Improve CI --- .github/workflows/main.yml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 96a95eb..a2497f2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,24 +1,52 @@ name: build and test -on: push +on: [push, pull_request] jobs: build: runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write steps: - uses: actions/checkout@v3 with: submodules: recursive + - uses: actions/setup-node@v4 with: node-version: '20' + - run: npm install + - run: npm run build + - id: deployment uses: actions/upload-pages-artifact@v3 with: path: build/ + - uses: fifsky/html-to-pdf-action@master + if: github.event_name == 'pull_request' + with: + htmlFile: build/index.html + outputFile: build/register.pdf + + - name: Upload the PDF as an artifact + if: github.event_name == 'pull_request' + id: pdf-artifact + uses: actions/upload-artifact@v4 + with: + name: register + path: build/register.pdf + + - name: Add artifact links to the pull request + if: github.event_name == 'pull_request' + uses: marocchino/sticky-pull-request-comment@v2 + with: + message: | + Rendered register: <${{ steps.pdf-artifact.outputs.artifact-url}}> + deploy: if: github.ref_name == github.event.repository.default_branch environment: From 3b66e391b722be4d689b056d2d5fe4d190a1b356 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 8 Apr 2025 10:47:24 -0700 Subject: [PATCH 15/29] Initial pass at adding IMF UG labels --- src/main/data/cpl-marker-labels.json | 667 +++++++++++++++++++++-- src/main/scripts/build.mjs | 17 +- src/main/templates/cpl-marker-labels.hbs | 6 +- 3 files changed, 637 insertions(+), 53 deletions(-) diff --git a/src/main/data/cpl-marker-labels.json b/src/main/data/cpl-marker-labels.json index afdf595..b4ef167 100644 --- a/src/main/data/cpl-marker-labels.json +++ b/src/main/data/cpl-marker-labels.json @@ -2,271 +2,848 @@ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFBT", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFBT" + } + ], "description": "First Frame of Bars and Tone", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFCB", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFCB" + } + ], "description": "First Frame of Commercial Blacks", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFCL", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFCL" + } + ], "description": "First Frame of Company/Production Logo", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFDL", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFDL" + } + ], "description": "First Frame of Distribution Logo", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFEC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFEC" + } + ], "description": "First Frame of End Credits. First displayable frame of content that contains any intensity of the End Credits (a non zero alpha value), which appear at the end of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFHS", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFHS" + } + ], "description": "First Frame of Head Slate", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFMC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFMC" + } + ], "description": "First displayable frame of content that contains any intensity of moving, rolling or scrolling credits (a non-zero alpha value), which appear at the end of the feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFOB", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFOB" + } + ], "description": "First Frame of Ratings Band. First displayable frame of content of the Rating Band, which is usually a slate at the beginning of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFOC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFOC" + } + ], "description": "First Frame of Composition. The first frame of a composition that is intended for display.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFOI", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFOI" + } + ], "description": "First Frame of Intermission.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFSP", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFS" + } + ], "description": "First Frame of Digital Sync Pop", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFTC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFTC" + } + ], "description": "First Frame of Title Credits. First displayable frame of content that contains any intensity of the Title Credits (a non zero alpha value), which appear at the beginning of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFTS", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFTS" + } + ], "description": "First Frame of Tail Slate", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FTXC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": " LTXC" + } + ], "description": "First Frame of Textless Title Credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FTXE", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LTXE" + } + ], "description": "First Frame of Textless End Credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FTXM", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFXM" + } + ], "description": "First Frame of Textless Material Segment", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFBT", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFBT" + } + ], "description": "Last Frame of Bars and Tone", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFCB", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFTB" + } + ], "description": "Last Frame of Commercial Blacks", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFCL", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFCL" + } + ], "description": "Last Frame of Company/Production Logo", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFDL", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFDL" + } + ], "description": "Last Frame of Distribution Logo", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFEC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFEC" + } + ], "description": "Last Frame of End Credits. Last displayable frame of content that contains any intensity of the End Credits (a non zero alpha value), which appear at the end of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFHS", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFHS" + } + ], "description": "Last Frame of Head Slate", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFMC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFMC" + } + ], "description": "Last displayable frame of content that contains any intensity of moving, rolling or scrolling credits (a non-zero alpha value), which appear at the end of the feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFOB", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFOB" + } + ], "description": "Last Frame of Ratings Band. Last displayable frame of content of the Rating Band, which is usually a slate at the beginning of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFOC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFOC" + } + ], "description": "Last Frame of Composition. The last frame of a composition that is intended for display.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFOI", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFOI" + } + ], "description": "Last Frame of Intermission.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFSP", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFSP" + } + ], "description": "Last Frame of Digital Sync Pop", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFTC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFTC" + } + ], "description": "Last Frame of Title Credits. Last displayable frame of content that contains any intensity of the Title Credits (a non zero alpha value), which appear at the beginning of a feature.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFTS", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFTS" + } + ], "description": "Last Frame of Tail Slate", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LTXC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FTXC" + } + ], "description": "Last frame of Textless Title Credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LTXE", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/20201320#standard-markers", + "label": "FTXE" + } + ], "description": "Last Frame of Textless End Credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LTXM", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FTXM" + } + ], "description": "Last frame of Textless Material Segment", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FPCI", + "seeAlso": [], "description": "Fixed Point Candidate Insertion. Indicates possible point in the timeline where it would be allowable to insert content downstrean. This is for material that may not have commercial blacks, but could indicate a candidate point where a commercial could be inserted.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFCO", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFCO" + } + ], "description": "First Frame of Candidate Overlay. First frame of a sequence of frames where overlays, e.g. commercial overlays, may be placed.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFCO", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "FFCO" + } + ], "description": "Last Frame of Candidate Overlay. Last frame of a sequence of frames where overlays, e.g. commercial overlays, may be placed.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FFOA", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "LFOA" + } + ], "description": "Audio First Frame. First frame of audio ring-in/ring-out where the video is in black.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "LFOA", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", + "label": "" + } + ], "description": "Audio Last Frame. Last frame of audio ring-in/ring-out where the video is in black.", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2016#standard-markers", "label": "FFDC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2016#standard-markers", + "label": "LFDC" + } + ], "description": "First Frame of Dubbing Credits. First displayable frame of content that contains any intensity of dubbing credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2016#standard-markers", "label": "LFDC", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2016#standard-markers", + "label": "FFDC" + } + ], "description": "Last Frame of Dubbing credits: Last displayable frame of content that contains any intensity of dubbing credits", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "FFEI", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "LFEI" + } + ], "description": "First Frame of Episode Intro", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "FFER", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "LFER" + } + ], "description": "First Frame of Episode Recap", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "FFUN", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "LFUN" + } + ], "description": "First Frame of Up Next", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "LFEI", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "FFEI" + } + ], "description": "Last Frame of Episode Intro", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "LFER", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "FFER" + } + ], "description": "Last Frame of Episode Recap", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" }, { "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", "label": "LFUN", + "seeAlso": [ + { + "scope": "http://www.smpte-ra.org/schemas/2067-3/2020#standard-markers", + "label": "FFUN" + } + ], "description": "Last Frame of Up Next", - "definingDocument": "SMPTE ST 2067-3" + "authority": "SMPTE ST 2067-3" + }, + { + "label": "FFCreditScene", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFCreditScene" + } + ], + "description": "First Frame of Credit Scene – A scene embedded in the credits, typically closing credits. This can be mid-credit or post-credit.", + "authority": "IMF UG" + }, + { + "label": "LFCreditScene", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFCreditScene" + } + ], + "description": "Last frame of Credit Scene – A scene embedded in the credits, typically closing credits. This can be mid-credit or post-credit.", + "authority": "IMF UG" + }, + { + "label": "FFRecap", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFRecap" + } + ], + "description": "First Frame of Recap – A recap of an episode, season, series/show, or other work. This applies to recaps leadin or trailing recaps rather than standalone recaps.", + "authority": "IMF UG" + }, + { + "label": "LFRecap", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFRecap" + } + ], + "description": "Last Frame of Recap – A recap of an episode, season, series/show, or other work. This applies to recaps leadin or trailing recaps rather than standalone recaps.", + "authority": "IMF UG" + }, + { + "label": "FFTease", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFTease" + } + ], + "description": "First Frame of Tease – A tease or other advertisement for an episode, season, series/show, or other work. This applies to recaps leadin or trailing teases rather than standalone recaps.", + "authority": "IMF UG" + }, + { + "label": "LFTease", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFTease" + } + ], + "description": "Last Frame of Tease – A tease or other advertisement for an episode, season, series/show, or other work. This applies to recaps leadin or trailing teases rather than standalone recaps.", + "authority": "IMF UG" + }, + { + "label": "FFAd", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFAd" + } + ], + "description": "First Frame of Ad – An advertisement other than Tease", + "authority": "IMF UG" + }, + { + "label": "LFAd", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFAd" + } + ], + "description": "Last Frame of Ad – An advertisement other than Tease", + "authority": "IMF UG" + }, + { + "label": "FFLogo", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFLogo" + } + ], + "description": "First Frame of Logo – Logos other than Company/Production or Distribution. For example, Network, Distributor, or Platform", + "authority": "IMF UG" + }, + { + "label": "LFLogo", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFLogo" + } + ], + "description": "Last Frame of Logo – Logos other than Company/Production or Distribution. For example, Network, Distributor, or Platform", + "authority": "IMF UG" + }, + { + "label": "FFAltEnding", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFAltEnding" + } + ], + "description": "First Frame of Alternate ending – An alternate ending", + "authority": "IMF UG" + }, + { + "label": "LFAltEnding", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFAltEnding" + } + ], + "description": "Last Frame of Alternate ending – An alternate ending", + "authority": "IMF UG" + }, + { + "label": "FFAddlCredits", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFAddlCredits" + } + ], + "description": "First Frame of Extra credits – Additional credits.", + "authority": "IMF UG" + }, + { + "label": "LFAddlCredits", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFAddlCredits" + } + ], + "description": "Last Frame of Extra credits – Additional credits.", + "authority": "IMF UG" + }, + { + "label": "FFAddlGraphics", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFAddlGraphics" + } + ], + "description": "First Frame of Additional graphics – Additional graphics", + "authority": "IMF UG" + }, + { + "label": "LFAddlGraphics", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFAddlGraphics" + } + ], + "description": "Last Frame of Additional graphics – Additional graphics", + "authority": "IMF UG" + }, + { + "label": "FFCompliance", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFCompliance" + } + ], + "description": "First Frame of Compliance event – Period of time that contains content not meeting some compliance standards (e.g., nudity, smoking, or language)", + "authority": "IMF UG" + }, + { + "label": "LFCompliance", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFCompliance" + } + ], + "description": "Last Frame of Compliance event – Period of time that contains content not meeting some compliance standards (e.g., nudity, smoking, or language)", + "authority": "IMF UG" + }, + { + "label": "FFTitleCard", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFTitleCard" + } + ], + "description": "First Frame of Title Card –The shows title graphic found within the 1st segment of a program. Could overlap with Opening sequence.", + "authority": "IMF UG" + }, + { + "label": "LFTitleCard", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFTitleCard" + } + ], + "description": "Last Frame of Title Card –The shows title graphic found within the 1st segment of a program. Could overlap with Opening sequence.", + "authority": "IMF UG" + }, + { + "label": "FFLS", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFLS" + } + ], + "description": "First Frame of First/Last frame of Localization Sequence/Segement/Shot that contains any video that is localized", + "authority": "IMF UG" + }, + { + "label": "LFLS", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFLS" + } + ], + "description": "First Frame of First/Last frame of Localization Sequence/Segement/Shot that contains any video that is localized", + "authority": "IMF UG" + }, + { + "label": "FFOT", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFOT" + } + ], + "description": "First Frame of First/Last frame of Tag that contains any sequence of credit content (mark-in/mark-out for credit sequence(tag))", + "authority": "IMF UG" + }, + { + "label": "LFOT", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFOT" + } + ], + "description": "First Frame of First/Last frame of Tag that contains any sequence of credit content (mark-in/mark-out for credit sequence(tag))", + "authority": "IMF UG" + }, + { + "label": "FFCallToAction", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFCallToAction" + } + ], + "description": "First Frame of Ad contains call to action like a web link \"visit www.savethewhales.org\"", + "authority": "IMF UG" + }, + { + "label": "LFCallToAction", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFCallToAction" + } + ], + "description": "First Frame of Ad contains call to action like a web link \"visit www.savethewhales.org\"", + "authority": "IMF UG" } ] \ No newline at end of file diff --git a/src/main/scripts/build.mjs b/src/main/scripts/build.mjs index a93dd86..fa890d8 100644 --- a/src/main/scripts/build.mjs +++ b/src/main/scripts/build.mjs @@ -47,23 +47,30 @@ if (!register) { const scopes = new Map(); for (const entry of register) { if (entry.scope === undefined) { - throw "Missing scope in entry"; + throw "Missing scope property"; } if (entry.label === undefined) { - throw "Missing label in entry"; + throw "Missing label property"; } if (entry.description === undefined) { - throw "Missing description in entry"; + throw "Missing description property"; } - if (entry.definingDocument === undefined) { - throw "Missing definingDocument in entry"; + if (entry.authority === undefined) { + throw "Missing authority property"; + } + if (entry.seeAlso === undefined) { + throw "Missing seeAlso property"; } let labels = scopes.get(entry.scope); if (labels === undefined) { labels = []; scopes.set(entry.scope, labels); } + if (labels.some((e) => e.label === entry.label)) { + throw `Duplicate label: ${entry.scope} ${entry.label}`; + } labels.push(entry); + } diff --git a/src/main/templates/cpl-marker-labels.hbs b/src/main/templates/cpl-marker-labels.hbs index 3c500f5..f465d4e 100644 --- a/src/main/templates/cpl-marker-labels.hbs +++ b/src/main/templates/cpl-marker-labels.hbs @@ -36,7 +36,7 @@ Label Description - Defining document + Where is it defined? {{#each scopes}} @@ -45,10 +45,10 @@ scope: {{scope}} {{#each labels}} - + {{label}} {{description}} - {{definingDocument}} + {{authority}} {{/each}} From d63f8cbb7e0013a1e83fd5d1d4e8a48ae091605e Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 8 Apr 2025 11:08:23 -0700 Subject: [PATCH 16/29] Add seeAlson --- src/main/data/cpl-marker-labels.json | 12 ++++++------ src/main/resources/static/main.css | 7 ++++++- src/main/scripts/build.mjs | 23 +++++++++++++++++++++-- src/main/templates/cpl-marker-labels.hbs | 8 +++++++- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/main/data/cpl-marker-labels.json b/src/main/data/cpl-marker-labels.json index b4ef167..c52053a 100644 --- a/src/main/data/cpl-marker-labels.json +++ b/src/main/data/cpl-marker-labels.json @@ -125,7 +125,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": "LFS" + "label": "LFSP" } ], "description": "First Frame of Digital Sync Pop", @@ -161,7 +161,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": " LTXC" + "label": "LTXC" } ], "description": "First Frame of Textless Title Credits", @@ -185,7 +185,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": "LFXM" + "label": "LTXM" } ], "description": "First Frame of Textless Material Segment", @@ -209,7 +209,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": "FFTB" + "label": "FFCB" } ], "description": "Last Frame of Commercial Blacks", @@ -364,7 +364,7 @@ "label": "LTXE", "seeAlso": [ { - "scope": "http://www.smpte-ra.org/schemas/2067-3/20201320#standard-markers", + "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", "label": "FTXE" } ], @@ -432,7 +432,7 @@ "seeAlso": [ { "scope": "http://www.smpte-ra.org/schemas/2067-3/2013#standard-markers", - "label": "" + "label": "FFOA" } ], "description": "Audio Last Frame. Last frame of audio ring-in/ring-out where the video is in black.", diff --git a/src/main/resources/static/main.css b/src/main/resources/static/main.css index 1962c72..2e1835c 100644 --- a/src/main/resources/static/main.css +++ b/src/main/resources/static/main.css @@ -2,6 +2,7 @@ body { overflow-x: hidden; font-family: Arial, Helvetica, sans-serif; margin: auto; + line-height: 125%; } /* toolbar */ @@ -72,7 +73,11 @@ footer { } #register th:nth-child(3) { - width: 30%; + width: 10%; +} + +#register th:nth-child(4) { + width: 20%; } #register tbody tr:nth-child(even) { diff --git a/src/main/scripts/build.mjs b/src/main/scripts/build.mjs index fa890d8..f3d347d 100644 --- a/src/main/scripts/build.mjs +++ b/src/main/scripts/build.mjs @@ -66,13 +66,32 @@ for (const entry of register) { labels = []; scopes.set(entry.scope, labels); } + + /* check for duplicate labels */ if (labels.some((e) => e.label === entry.label)) { throw `Duplicate label: ${entry.scope} ${entry.label}`; } labels.push(entry); - } +/* validate seeAlso property */ +for (const entry of register) { + for (const ref of entry.seeAlso) { + if (ref.scope === undefined) { + throw "Missing seeAlso scope property"; + } + if (ref.label === undefined) { + throw "Missing seeAlso label property"; + } + const ref_scope = scopes.get(ref.scope); + if (ref_scope === undefined) { + throw `Unknown seeAlso scope: ${ref.scope}`; + } + if (!ref_scope.find((e) => e.label === ref.label)) { + throw `Unknown seeAlso label at ${entry.label}: ${ref.label}`; + } + } +} /* get the version field */ let version = "Unknown version" @@ -98,7 +117,7 @@ if (!template) { var html = template({ "version": version, - "scopes" : Array.from(scopes.entries(), ([scope, value]) => ({scope: scope, labels: value})), + "scopes": Array.from(scopes.entries(), ([scope, value]) => ({ scope: scope, labels: value })), }); writeFileSync(join(BUILD_PATH, PAGE_SITE_PATH), html, 'utf8'); diff --git a/src/main/templates/cpl-marker-labels.hbs b/src/main/templates/cpl-marker-labels.hbs index f465d4e..3ae0075 100644 --- a/src/main/templates/cpl-marker-labels.hbs +++ b/src/main/templates/cpl-marker-labels.hbs @@ -36,18 +36,24 @@ Label Description + See also Where is it defined? {{#each scopes}} - scope: {{scope}} + scope: {{scope}} {{#each labels}} {{label}} {{description}} + + {{#each seeAlso}} + {{label}} + {{/each}} + {{authority}} {{/each}} From c25958dd25ee59f0e45b4c4bbd9077ec9b5584b5 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 18:34:11 -0700 Subject: [PATCH 17/29] Update CI --- .github/workflows/main.yml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a2497f2..e97f39b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,27 +26,6 @@ jobs: with: path: build/ - - uses: fifsky/html-to-pdf-action@master - if: github.event_name == 'pull_request' - with: - htmlFile: build/index.html - outputFile: build/register.pdf - - - name: Upload the PDF as an artifact - if: github.event_name == 'pull_request' - id: pdf-artifact - uses: actions/upload-artifact@v4 - with: - name: register - path: build/register.pdf - - - name: Add artifact links to the pull request - if: github.event_name == 'pull_request' - uses: marocchino/sticky-pull-request-comment@v2 - with: - message: | - Rendered register: <${{ steps.pdf-artifact.outputs.artifact-url}}> - deploy: if: github.ref_name == github.event.repository.default_branch environment: From ba29279950138be6a26e194860d626bdf1067d0e Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 18:35:18 -0700 Subject: [PATCH 18/29] Fix CI --- .github/workflows/main.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e97f39b..91c12f7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,6 +26,30 @@ jobs: with: path: build/ + artifact: + runs-on: ubuntu-latest + needs: build + if: github.event_name == 'pull_request' + steps: + - uses: markwilson/html2pdf@v1.0 + with: + htmlPath: build/index.html + pdfName: build/register.pdf + + - name: Upload the PDF as an artifact + id: pdf-artifact + uses: actions/upload-artifact@v4 + with: + name: register + path: build/register.pdf + + - name: Add artifact links to the pull request + if: steps.finder + uses: marocchino/sticky-pull-request-comment@v2 + with: + message: | + Rendered register: <${{ steps.pdf-artifact.outputs.artifact-url}}> + deploy: if: github.ref_name == github.event.repository.default_branch environment: From f8fa1bd60c7e7b12a2583b924639a754aba707e2 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:13:42 -0700 Subject: [PATCH 19/29] Fix CI --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 91c12f7..e3a385f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -44,7 +44,6 @@ jobs: path: build/register.pdf - name: Add artifact links to the pull request - if: steps.finder uses: marocchino/sticky-pull-request-comment@v2 with: message: | From 33f76c97f8b76965c14a0d098299fcbdb15826ee Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:21:59 -0700 Subject: [PATCH 20/29] Fix CI --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e3a385f..89a773c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,7 +34,7 @@ jobs: - uses: markwilson/html2pdf@v1.0 with: htmlPath: build/index.html - pdfName: build/register.pdf + pdfName: build/register - name: Upload the PDF as an artifact id: pdf-artifact From 8d12cbcc0c61b83daeb1f283b86090dc9c8b402a Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:34:51 -0700 Subject: [PATCH 21/29] Fix CI --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 89a773c..faf8754 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,10 +31,10 @@ jobs: needs: build if: github.event_name == 'pull_request' steps: - - uses: markwilson/html2pdf@v1.0 + - uses: ferdinandkeller/html-to-pdf-action@v2 with: - htmlPath: build/index.html - pdfName: build/register + - source-path: build/index.html + - destination-path: build/register.pdf - name: Upload the PDF as an artifact id: pdf-artifact From 3e2af88d0ed94226539409d485a34c20239224ee Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:36:09 -0700 Subject: [PATCH 22/29] Fix CI --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index faf8754..d3d28f4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -33,8 +33,8 @@ jobs: steps: - uses: ferdinandkeller/html-to-pdf-action@v2 with: - - source-path: build/index.html - - destination-path: build/register.pdf + source-path: build/index.html + destination-path: build/register.pdf - name: Upload the PDF as an artifact id: pdf-artifact From 78d940a87a7d4d5b4df185934215586e0c8c429a Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:40:05 -0700 Subject: [PATCH 23/29] Fix CI --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d3d28f4..87a9c29 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,10 +31,10 @@ jobs: needs: build if: github.event_name == 'pull_request' steps: - - uses: ferdinandkeller/html-to-pdf-action@v2 + - uses: fifsky/html-to-pdf-action@master with: - source-path: build/index.html - destination-path: build/register.pdf + htmlFile: ./build/index.html + outputFile: ./build/register.pdf - name: Upload the PDF as an artifact id: pdf-artifact From 5cc5b071c58850b570bae8872c021f3273aad568 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:41:13 -0700 Subject: [PATCH 24/29] Fix CI --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 87a9c29..b0f9b62 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,14 +34,14 @@ jobs: - uses: fifsky/html-to-pdf-action@master with: htmlFile: ./build/index.html - outputFile: ./build/register.pdf + outputFile: register.pdf - name: Upload the PDF as an artifact id: pdf-artifact uses: actions/upload-artifact@v4 with: name: register - path: build/register.pdf + path: register.pdf - name: Add artifact links to the pull request uses: marocchino/sticky-pull-request-comment@v2 From 21265cbf96380f0eb0824286b56d184f2ca9b853 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 19:51:55 -0700 Subject: [PATCH 25/29] Fix CI --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b0f9b62..34107b8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,9 +31,10 @@ jobs: needs: build if: github.event_name == 'pull_request' steps: + - uses: actions/download-artifact@v4 - uses: fifsky/html-to-pdf-action@master with: - htmlFile: ./build/index.html + htmlFile: build/index.html outputFile: register.pdf - name: Upload the PDF as an artifact From ef1c70ec214b782d42f15b00ed0fd21818b47bdf Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 20:25:36 -0700 Subject: [PATCH 26/29] Fix CI --- .github/workflows/main.yml | 40 +++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 34107b8..9da7a8d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,29 +26,25 @@ jobs: with: path: build/ - artifact: - runs-on: ubuntu-latest - needs: build - if: github.event_name == 'pull_request' - steps: - - uses: actions/download-artifact@v4 - - uses: fifsky/html-to-pdf-action@master - with: - htmlFile: build/index.html - outputFile: register.pdf + - uses: fifsky/html-to-pdf-action@master + if: github.event_name == 'pull_request' + with: + htmlFile: build/index.html + outputFile: build/register.pdf - - name: Upload the PDF as an artifact - id: pdf-artifact - uses: actions/upload-artifact@v4 - with: - name: register - path: register.pdf - - - name: Add artifact links to the pull request - uses: marocchino/sticky-pull-request-comment@v2 - with: - message: | - Rendered register: <${{ steps.pdf-artifact.outputs.artifact-url}}> + - name: Upload the PDF as an artifact + if: github.event_name == 'pull_request' + id: pdf-artifact + uses: actions/upload-artifact@v4 + with: + name: register + path: build/register.pdf + + - name: Add artifact links to the pull request + uses: marocchino/sticky-pull-request-comment@v2 + with: + message: | + Rendered register: <${{ steps.pdf-artifact.outputs.artifact-url}}> deploy: if: github.ref_name == github.event.repository.default_branch From d1c21be2ecb3ac3b5830318f2f4a97a498e93885 Mon Sep 17 00:00:00 2001 From: Pierre-Anthony Lemieux Date: Tue, 10 Jun 2025 20:25:51 -0700 Subject: [PATCH 27/29] Fix CI --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9da7a8d..a2497f2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,6 +41,7 @@ jobs: path: build/register.pdf - name: Add artifact links to the pull request + if: github.event_name == 'pull_request' uses: marocchino/sticky-pull-request-comment@v2 with: message: | From 983325735ab3f96bb7071aa5550b6f37f4b5af7b Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Fri, 20 Jun 2025 20:59:13 +0700 Subject: [PATCH 28/29] address feedback based on group discussion during 2025-06-11 IMFUG call --- src/main/data/cpl-marker-labels.json | 52 ++++++++-------------------- 1 file changed, 14 insertions(+), 38 deletions(-) diff --git a/src/main/data/cpl-marker-labels.json b/src/main/data/cpl-marker-labels.json index c52053a..ea4638f 100644 --- a/src/main/data/cpl-marker-labels.json +++ b/src/main/data/cpl-marker-labels.json @@ -583,27 +583,27 @@ "authority": "IMF UG" }, { - "label": "FFTease", + "label": "FFPromo", "scope": "https://www.imfug.com/ns/cpl-markers/2025", "seeAlso": [ { "scope": "https://www.imfug.com/ns/cpl-markers/2025", - "label": "LFTease" + "label": "LFPromo" } ], - "description": "First Frame of Tease – A tease or other advertisement for an episode, season, series/show, or other work. This applies to recaps leadin or trailing teases rather than standalone recaps.", + "description": "First Frame of Promotion – promotional material associated with media. This includes teasers, trailers, electronic press kits and other materials.", "authority": "IMF UG" }, { - "label": "LFTease", + "label": "LFPromo", "scope": "https://www.imfug.com/ns/cpl-markers/2025", "seeAlso": [ { "scope": "https://www.imfug.com/ns/cpl-markers/2025", - "label": "FFTease" + "label": "FFPromo" } ], - "description": "Last Frame of Tease – A tease or other advertisement for an episode, season, series/show, or other work. This applies to recaps leadin or trailing teases rather than standalone recaps.", + "description": "Last Frame of Promotion – promotional material associated with media. This includes teasers, trailers, electronic press kits and other materials.", "authority": "IMF UG" }, { @@ -615,7 +615,7 @@ "label": "LFAd" } ], - "description": "First Frame of Ad – An advertisement other than Tease", + "description": "First Frame of Ad – any form of advertisement including TV commercials, informercials, and public service announcements.", "authority": "IMF UG" }, { @@ -627,7 +627,7 @@ "label": "FFAd" } ], - "description": "Last Frame of Ad – An advertisement other than Tease", + "description": "Last Frame of Ad – any form of advertisement including TV commercials, informercials, and public service announcements.", "authority": "IMF UG" }, { @@ -775,51 +775,27 @@ "authority": "IMF UG" }, { - "label": "FFLS", + "label": "FFPictureLocal", "scope": "https://www.imfug.com/ns/cpl-markers/2025", "seeAlso": [ { "scope": "https://www.imfug.com/ns/cpl-markers/2025", - "label": "LFLS" + "label": "LFPictureLocal" } ], - "description": "First Frame of First/Last frame of Localization Sequence/Segement/Shot that contains any video that is localized", + "description": "First frame of Localization Sequence/Segement/Shot that contain any images that are localized", "authority": "IMF UG" }, { - "label": "LFLS", + "label": "LFPictureLocal", "scope": "https://www.imfug.com/ns/cpl-markers/2025", "seeAlso": [ { "scope": "https://www.imfug.com/ns/cpl-markers/2025", - "label": "FFLS" + "label": "FFPictureLocal" } ], - "description": "First Frame of First/Last frame of Localization Sequence/Segement/Shot that contains any video that is localized", - "authority": "IMF UG" - }, - { - "label": "FFOT", - "scope": "https://www.imfug.com/ns/cpl-markers/2025", - "seeAlso": [ - { - "scope": "https://www.imfug.com/ns/cpl-markers/2025", - "label": "LFOT" - } - ], - "description": "First Frame of First/Last frame of Tag that contains any sequence of credit content (mark-in/mark-out for credit sequence(tag))", - "authority": "IMF UG" - }, - { - "label": "LFOT", - "scope": "https://www.imfug.com/ns/cpl-markers/2025", - "seeAlso": [ - { - "scope": "https://www.imfug.com/ns/cpl-markers/2025", - "label": "FFOT" - } - ], - "description": "First Frame of First/Last frame of Tag that contains any sequence of credit content (mark-in/mark-out for credit sequence(tag))", + "description": "Last frame of Localization Sequence/Segement/Shot that contain any images that are localized", "authority": "IMF UG" }, { From 94871d8ffb186ffc5f9007e7652329d9429c1ff4 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Sat, 2 Aug 2025 08:50:27 -0700 Subject: [PATCH 29/29] address feedback from 2025-07-21 group discussion, add FFVB/LFVB and FFBreakPreview/LFBreakPreview marker labels --- src/main/data/cpl-marker-labels.json | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/main/data/cpl-marker-labels.json b/src/main/data/cpl-marker-labels.json index ea4638f..d7ad33f 100644 --- a/src/main/data/cpl-marker-labels.json +++ b/src/main/data/cpl-marker-labels.json @@ -821,5 +821,53 @@ ], "description": "First Frame of Ad contains call to action like a web link \"visit www.savethewhales.org\"", "authority": "IMF UG" + }, + { + "label": "FFVB", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFVB" + } + ], + "description": "First frame of Video Black. One or more frames of intentional black picture (e.g., lead-in, dramatic pauses, and other creative devices), distinguishing it from unintended dropouts and commercial black.", + "authority": "IMF UG" + }, + { + "label": "LFVB", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFVB" + } + ], + "description": "Last frame of Video Black. One or more frames of intentional black picture (e.g., lead-in, dramatic pauses, and other creative devices), distinguishing it from unintended dropouts and commercial black.", + "authority": "IMF UG" + }, + { + "label": "FFBreakPreview", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "LFBreakPreview" + } + ], + "description": "First frame of a segment teasing viewers to return after a break (e.g., \"Stay tuned\", \"Up Next\", and \"After the break\").", + "authority": "IMF UG" + }, + { + "label": "LFBreakPreview", + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "seeAlso": [ + { + "scope": "https://www.imfug.com/ns/cpl-markers/2025", + "label": "FFBreakPreview" + } + ], + "description": "Last frame of a segment teasing viewers to return after a break (e.g., \"Stay tuned\", \"Up Next\", and \"After the break\").", + "authority": "IMF UG" } ] \ No newline at end of file