1 /*
2  * Copyright (c) 2013-2020 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 kShotcutPlaylistProperty "shotcut:playlist"
36 #define kShotcutTransitionProperty "shotcut:transition"
37 #define kShotcutProducerProperty "shotcut:producer"
38 #define kShotcutVirtualClip "shotcut:virtual"
39 #define kTimelineScaleProperty "shotcut:scaleFactor"
40 #define kTrackHeightProperty "shotcut:trackHeight"
41 #define kTrackNameProperty "shotcut:name"
42 #define kTrackLockProperty "shotcut:lock"
43 #define kVideoTrackProperty "shotcut:video"
44 #define kShotcutCaptionProperty "shotcut:caption"
45 #define kShotcutDetailProperty "shotcut:detail"
46 #define kShotcutHashProperty "shotcut:hash"
47 #define kShotcutSkipConvertProperty "shotcut:skipConvert"
48 #define kShotcutAnimInProperty "shotcut:animIn"
49 #define kShotcutAnimOutProperty "shotcut:animOut"
50 // Shotcut's VUI (video user interface) components set this so that glwidget can
51 // hide the VUI when the play head is not over the clip with the current filter.
52 #define kShotcutVuiMetaProperty "meta.shotcut.vui"
53 #define kDefaultAudioIndexProperty "shotcut:defaultAudioIndex"
54 #define kOriginalResourceProperty "shotcut:resource"
55 #define kOriginalInProperty "shotcut:originalIn"
56 #define kOriginalOutProperty "shotcut:originalOut"
57 #define kDisableProxyProperty "shotcut:disableProxy"
58 
59 /* Project specific properties */
60 #define kShotcutProjectAudioChannels "shotcut:projectAudioChannels"
61 #define kShotcutProjectFolder "shotcut:projectFolder"
62 
63 /* Ideally all shotcut properties should begin with "shotcut:", but these
64  * do not and kept for legacy reasons? */
65 
66 #define kAspectRatioNumerator "shotcut_aspect_num"
67 #define kAspectRatioDenominator "shotcut_aspect_den"
68 #define kShotcutSequenceProperty "shotcut_sequence"
69 
70 /* Special object Ids expected by Shotcut and used in XML */
71 
72 #define kBackgroundTrackId "background"
73 #define kLegacyPlaylistTrackId "main bin"
74 #define kPlaylistTrackId "main_bin"
75 
76 /* Internal only */
77 
78 #define kAudioLevelsProperty "_shotcut:audio-levels"
79 #define kBackgroundCaptureProperty "_shotcut:bgcapture"
80 #define kPlaylistIndexProperty "_shotcut:playlistIndex"
81 #define kPlaylistStartProperty "_shotcut:playlistStart"
82 #define kFilterInProperty "_shotcut:filter_in"
83 #define kFilterOutProperty "_shotcut:filter_out"
84 #define kThumbnailInProperty "_shotcut:thumbnail-in"
85 #define kThumbnailOutProperty "_shotcut:thumbnail-out"
86 #define kUndoIdProperty "_shotcut:undo_id"
87 #define kUuidProperty "_shotcut:uuid"
88 #define kMultitrackItemProperty "_shotcut:multitrack-item"
89 #define kExportFromProperty "_shotcut:exportFromDefault"
90 #define kIsProxyProperty "shotcut:proxy"
91 
92 #define kDefaultMltProfile "atsc_1080p_25"
93 
94 #endif // SHOTCUT_MLT_PROPERTIES_H
95