CuteLogger
Fast and simple logging solution for Qt based applications
shotcut_mlt_properties.h
1/*
2 * Copyright (c) 2013-2026 Meltytech, LLC
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef SHOTCUT_MLT_PROPERTIES_H
19#define SHOTCUT_MLT_PROPERTIES_H
20
21/* This file contains all of the Shotcut-specific MLT properties.
22 * See also https://www.shotcut.org/notes/mltxml-annotations/
23 *
24 * A property should be prefaced with an underscore if it will not be saved
25 * in the XML even if it never has a chance of getting into there. This makes
26 * it more clear which is also an XML annotation or purely internal use.
27 */
28
29/* MLT XML annotations */
30
31#define kShotcutXmlProperty "shotcut"
32#define kAudioTrackProperty "shotcut:audio"
33#define kCommentProperty "shotcut:comment"
34#define kShotcutFilterProperty "shotcut:filter"
35#define kShotcutAudioMixingAssistantProperty "shotcut:audioMixingAssistant"
36#define kShotcutPlaylistProperty "shotcut:playlist"
37#define kShotcutTransitionProperty "shotcut:transition"
38#define kShotcutProducerProperty "shotcut:producer"
39#define kShotcutVirtualClip "shotcut:virtual"
40#define kTimelineScaleProperty "shotcut:scaleFactor"
41#define kTrackHeightProperty "shotcut:trackHeight"
42#define kTrackHeaderWidthProperty "shotcut:trackHeaderWidth"
43#define kTrackNameProperty "shotcut:name"
44#define kTrackAudioRoleProperty "shotcut:audioRole"
45#define kTrackLockProperty "shotcut:lock"
46#define kVideoTrackProperty "shotcut:video"
47#define kShotcutCaptionProperty "shotcut:caption"
48#define kShotcutDetailProperty "shotcut:detail"
49#define kShotcutHashProperty "shotcut:hash"
50#define kShotcutHiddenProperty "shotcut:hidden"
51#define kShotcutHiddenPositionProperty "shotcut:hiddenPosition"
52#define kShotcutHiddenPositionPost "post"
53#define kShotcutTrackVolumeProperty "shotcut:trackVolume"
54#define kShotcutTrackVolumeNameProperty "shotcut:trackVolumeName"
55#define kShotcutSkipConvertProperty "shotcut:skipConvert"
56#define kShotcutAnimInProperty "shotcut:animIn"
57#define kShotcutAnimOutProperty "shotcut:animOut"
58#define kShotcutMarkersProperty "shotcut:markers"
59#define kShotcutGroupProperty "shotcut:group"
60// Shotcut's VUI (video user interface) components set this so that glwidget can
61// hide the VUI when the play head is not over the clip with the current filter.
62#define kShotcutVuiMetaProperty "meta.shotcut.vui"
63#define kDefaultAudioIndexProperty "shotcut:defaultAudioIndex"
64#define kOriginalResourceProperty "shotcut:resource"
65#define kOriginalInProperty "shotcut:originalIn"
66#define kOriginalOutProperty "shotcut:originalOut"
67#define kDisableProxyProperty "shotcut:disableProxy"
68#define kBackupProperty "shotcut:backup"
69// "shotcut:proxy" is internal only because older versions do not know to hide it.
70// "shotcut:metaProxy" indicates whether the "meta." properties reflect source or proxy.
71#define kMetaProxyProperty "shotcut:proxy.meta"
72#define kShotcutBinsProperty "shotcut:bins"
73
74/* Project specific properties */
75#define kShotcutProjectAudioChannels "shotcut:projectAudioChannels"
76#define kShotcutProjectFolder "shotcut:projectFolder"
77#define kShotcutProjectNote "shotcut:projectNote"
78#define kShotcutProjectProcessingMode "shotcut:processingMode"
79#define kShotcutProjectTargetLoudnessProperty "shotcut:targetLoudness"
80#define kShotcutColorTransfer "shotcut:colorTransfer"
81#define kShotcutDuckEnabledProperty "shotcut:duck_enabled"
82#define kShotcutDuckThresholdProperty "shotcut:duck_threshold"
83
84/* Ideally all shotcut properties should begin with "shotcut:", but these
85 * do not and kept for legacy reasons? */
86
87#define kAspectRatioNumerator "shotcut_aspect_num"
88#define kAspectRatioDenominator "shotcut_aspect_den"
89#define kShotcutSequenceProperty "shotcut_sequence"
90
91/* Special object Ids expected by Shotcut and used in XML */
92
93#define kBackgroundTrackId "background"
94#define kLegacyPlaylistTrackId "main bin"
95#define kPlaylistTrackId "main_bin"
96
97/* Internal only */
98
99#define kAudioLevelsProperty "_shotcut:audio-levels"
100#define kBackgroundCaptureProperty "_shotcut:bgcapture"
101#define kPlaylistIndexProperty "_shotcut:playlistIndex"
102#define kPlaylistStartProperty "_shotcut:playlistStart"
103#define kFilterInProperty "_shotcut:filter_in"
104#define kFilterOutProperty "_shotcut:filter_out"
105#define kThumbnailInProperty "_shotcut:thumbnail-in"
106#define kThumbnailOutProperty "_shotcut:thumbnail-out"
107#define kUuidProperty "_shotcut:uuid"
108#define kMultitrackItemProperty "_shotcut:multitrack-item"
109#define kExportFromProperty "_shotcut:exportFromDefault"
110
111/* Temporary, serializable copy of kUuidProperty. Only used by UndoHelper to round-trip
112 * _shotcut:uuid through a per-track XML snapshot (private properties are not serialized).
113 * Always set and cleared within the same operation; never intentionally persisted. */
114#define kUuidPropertyTemp "shotcut:temp_uuid"
115#define kTrackIndexProperty "_shotcut:trackIndex"
116#define kFilterIndexProperty "_shotcut:filterIndex"
117#define kNewFilterProperty "_shotcut:newFilter"
118#define kShotcutFiltersClipboard "shotcut:filtersClipboard"
119#define kIsProxyProperty "shotcut:proxy"
120#define kPrivateProducerProperty "_shotcut:producer"
121#define kNewFrameOutProperty "_shotcut:newFrameOut"
122#define kXmlClipCheckedMtimeProperty "_shotcut:xmlClipCheckedMtime"
123
124#define kDefaultMltProfile "atsc_1080p_25"
125
126#endif // SHOTCUT_MLT_PROPERTIES_H