Blender V4.5
DNA_sequence_types.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
14
15#pragma once
16
17#include "DNA_color_types.h"
18#include "DNA_defs.h"
19#include "DNA_listBase.h"
20#include "DNA_session_uid_types.h" /* for #SessionUID */
21#include "DNA_vec_types.h" /* for #rctf */
22
23struct Ipo;
24struct MovieClip;
25struct Scene;
26struct VFont;
27struct bSound;
28
29#ifdef __cplusplus
30namespace blender::seq {
31struct FinalImageCache;
32struct IntraFrameCache;
33struct MediaPresence;
34struct ThumbnailCache;
35struct TextVarsRuntime;
36struct PrefetchJob;
37struct SourceImageCache;
38struct StripLookup;
39} // namespace blender::seq
48#else
54typedef struct PrefetchJob PrefetchJob;
56typedef struct StripLookup StripLookup;
57#endif
58
59/* -------------------------------------------------------------------- */
62
63typedef struct StripAnim {
64 struct StripAnim *next, *prev;
67
68typedef struct StripElem {
70 char filename[/*FILE_MAXFILE*/ 256];
73 float orig_fps;
75
76typedef struct StripCrop {
77 int top;
78 int bottom;
79 int left;
80 int right;
82
83typedef struct StripTransform {
84 float xofs;
85 float yofs;
86 float scale_x;
87 float scale_y;
88 float rotation;
90 float origin[2];
91 int filter;
93
94typedef struct StripColorBalance {
95 int method;
96 float lift[3];
97 float gamma[3];
98 float gain[3];
99 float slope[3];
100 float offset[3];
101 float power[3];
102 int flag;
103 char _pad[4];
104 // float exposure;
105 // float saturation;
107
108typedef struct StripProxy {
110 char dirpath[/*FILE_MAXDIR*/ 768];
112 char filename[/*FILE_MAXFILE*/ 256];
113 struct MovieReader *anim; /* custom proxy anim file */
114
115 short tc; /* time code in use */
116
117 short quality; /* proxy build quality */
118 short build_size_flags; /* size flags (see below) of all proxies */
119 /* to build */
120 short build_tc_flags; /* time code flags (see below) of all tc indices */
121 /* to build */
124 char _pad[5];
126
146
154
155typedef struct SeqRetimingKey {
157 int flag; /* eSeqRetimingKeyFlag */
158 int _pad0;
159 float retiming_factor; /* Value between 0-1 mapped to original content range. */
160
161 char _pad1[4];
162 double original_strip_frame_index; /* Used for transition keys only. */
163 float original_retiming_factor; /* Used for transition keys only. */
164 char _pad2[4];
166
170
179typedef struct Strip {
180 struct Strip *next, *prev;
181 void *_pad;
183 void *lib;
185 char name[/*STRIP_NAME_MAXSTR*/ 64];
186
188 int flag, type;
190 int len;
195 float start;
210 float sat;
211 float mul;
212
215 short _pad1;
220
222
224 struct Ipo *ipo DNA_DEPRECATED;
225
228 struct Scene *scene;
234 struct Mask *mask;
237
239 /* DEPRECATED, only used for versioning. */
241
243 struct Strip *input1, *input2;
244
245 /* This strange padding is needed for compatibility with older versions
246 * that assumed `seqbasep` is at fixed offset. */
247 void *_pad7;
248 int _pad8[2];
249
253 ListBase channels; /* SeqTimelineChannel */
254
255 /* List of strip connections (one-way, not bidirectional). */
256 ListBase connections; /* StripConnection */
257
259 struct bSound *sound;
262 float volume;
263
265 float pitch DNA_DEPRECATED, pan;
266 float strobe;
267
269 char _pad4[4];
270
273
278
281
282 /* Tag color showed if `SEQ_TIMELINE_SHOW_STRIP_COLOR_TAG` is set. */
283 int8_t color_tag;
284
286 char _pad2[2];
287 int _pad9;
288
289 /* is sfra needed anymore? - it looks like its only used in one place */
291 int sfra;
292
293 /* Multiview */
295 char _pad3[3];
297
306
307 /* modifiers */
309
310 /* Playback rate of strip content in frames per second. */
313
316 char _pad6[4];
317
320
321typedef struct MetaStack {
322 struct MetaStack *next, *prev;
326 /* the startdisp/enddisp when entering the meta */
329
336
341
350
380
382
383/* -------------------------------------------------------------------- */
386
387typedef struct WipeVars {
391
392typedef struct GlowVars {
394 float fMini;
395 float fClamp;
397 float fBoost;
399 float dDist;
404
416
417typedef struct SolidColorVars {
418 float col[3];
419 char _pad[4];
421
422typedef struct SpeedControlVars {
423 float *frameMap;
424 /* DEPRECATED, only used for versioning. */
426 int flags;
427
429
434
436enum {
441};
442
447
476
478enum {
479 SEQ_TEXT_SHADOW = (1 << 0),
480 SEQ_TEXT_BOX = (1 << 1),
481 SEQ_TEXT_BOLD = (1 << 2),
482 SEQ_TEXT_ITALIC = (1 << 3),
484};
485
487enum {
491};
492
494enum {
498};
499
500#define STRIP_FONT_NOT_LOADED -2
501
508
510
511/* -------------------------------------------------------------------- */
514
515typedef struct StripModifierData {
517 int type, flag;
518 char name[/*MAX_NAME*/ 64];
519
520 /* mask input, either sequence or mask ID */
523
525 struct Mask *mask_id;
527
534
535enum {
538};
539
545
551
558
562
569
577
578enum {
581};
582
584
587
592
599
600/* -------------------------------------------------------------------- */
603
605enum {
608};
609
611enum {
613};
614
615#define STRIP_OFSBOTTOM 0.05f
616#define STRIP_OFSTOP 0.95f
617
619enum {
622};
623
625enum {
626 SEQ_SPEED_UNUSED_2 = 1 << 0, /* cleared */
627 SEQ_SPEED_UNUSED_1 = 1 << 1, /* cleared */
628 SEQ_SPEED_UNUSED_3 = 1 << 2, /* cleared */
630};
631
632#define STRIP_NAME_MAXSTR 64
633
634/* From: `DNA_object_types.h`, see it's doc-string there. */
635#define SELECT 1
636
638enum {
639 /* `SELECT = (1 << 0)` */
640 SEQ_LEFTSEL = (1 << 1),
641 SEQ_RIGHTSEL = (1 << 2),
642 SEQ_OVERLAP = (1 << 3),
643 SEQ_FILTERY = (1 << 4),
644 SEQ_MUTE = (1 << 5),
649 SEQ_FLAG_DELETE = (1 << 10),
650 SEQ_FLIPX = (1 << 11),
651 SEQ_FLIPY = (1 << 12),
652 SEQ_MAKE_FLOAT = (1 << 13),
653 SEQ_LOCK = (1 << 14),
654 SEQ_USE_PROXY = (1 << 15),
658 SEQ_SHOW_RETIMING = (1 << 19),
659 SEQ_SHOW_OFFSETS = (1 << 20),
661
664
665 /* flags for whether those properties are animated or not */
670
671 /* don't include Annotations in OpenGL previews of Scene strips */
673 SEQ_USE_VIEWS = (1 << 29),
674
675 /* Access scene strips directly (like a meta-strip). */
676 SEQ_SCENE_STRIPS = (1 << 30),
677
678 SEQ_INVALID_EFFECT = (1u << 31),
679};
680
682enum {
683 SEQ_STORAGE_PROXY_CUSTOM_FILE = (1 << 1), /* store proxy in custom directory */
684 SEQ_STORAGE_PROXY_CUSTOM_DIR = (1 << 2), /* store proxy in custom file */
685};
686
687/* convenience define for all selection flags */
688#define STRIP_ALLSEL (SELECT + SEQ_LEFTSEL + SEQ_RIGHTSEL)
689
690/* Deprecated, don't use a flag anymore. */
691// #define STRIP_ACTIVE 1048576
692
693enum {
700};
701
705enum {
710};
711
715enum {
719};
720
722enum {
724};
725
727enum {
730};
731
737typedef enum StripType {
743 STRIP_TYPE_SOUND_HD = 5, /* DEPRECATED */
746
756 15, /* Removed (behavior was the same as alpha-over), only used when reading old files. */
757 /* STRIP_TYPE_PLUGIN = 24, */ /* Deprecated */
768
769 /* Blend modes */
788
791
792enum {
795};
796
797enum {
799};
800/* all other BLEND_MODEs are simple STRIP_TYPE_EFFECT ids and therefore identical
801 * to the table above. (Only those effects that handle _exactly_ two inputs,
802 * otherwise, you can't really blend, right :) !)
803 */
804
805#define STRIP_HAS_PATH(_strip) \
806 (ELEM((_strip)->type, \
807 STRIP_TYPE_MOVIE, \
808 STRIP_TYPE_IMAGE, \
809 STRIP_TYPE_SOUND_RAM, \
810 STRIP_TYPE_SOUND_HD))
811
812/* modifiers */
813
815enum {
824 /* Keep last. */
826};
827
829enum {
832};
833
834enum {
837};
838
839enum {
840 /* Mask animation will be remapped relative to the strip start frame. */
842 /* Global (scene) frame number will be used to access the mask. */
844};
845
846enum {
848 SEQ_CACHE_UNUSED_1 = (1 << 1), /* Was SEQ_CACHE_STORE_PREPROCESSED */
849 SEQ_CACHE_UNUSED_2 = (1 << 2), /* Was SEQ_CACHE_STORE_COMPOSITE */
851
852 /* For lookup purposes */
854
855 SEQ_CACHE_UNUSED_4 = (1 << 4), /* Was SEQ_CACHE_OVERRIDE */
861
863 SEQ_CACHE_UNUSED_11 = (1 << 11), /* Was SEQ_CACHE_DISK_CACHE_ENABLE */
864};
865
881
882/* Strip->StripTransform->filter */
883enum {
890};
891
896
These structs are the foundation for all linked lists in the library system.
@ SEQUENCE_MASK_INPUT_STRIP
@ SEQUENCE_MASK_INPUT_ID
struct SourceImageCache SourceImageCache
eSeqRetimingKeyFlag
@ SEQ_KEY_SELECTED
@ SEQ_SPEED_TRANSITION_OUT
@ SEQ_FREEZE_FRAME_OUT
@ SEQ_SPEED_TRANSITION_IN
@ SEQ_FREEZE_FRAME_IN
@ SEQ_BLEND_REPLACE
@ SEQ_CACHE_ALL_TYPES
@ SEQ_CACHE_UNUSED_8
@ SEQ_CACHE_UNUSED_2
@ SEQ_CACHE_UNUSED_4
@ SEQ_CACHE_STORE_RAW
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_CACHE_UNUSED_5
@ SEQ_CACHE_UNUSED_7
@ SEQ_CACHE_UNUSED_11
@ SEQ_CACHE_PREFETCH_ENABLE
@ SEQ_CACHE_UNUSED_1
@ SEQ_CACHE_UNUSED_6
@ SEQ_CACHE_UNUSED_9
struct ThumbnailCache ThumbnailCache
@ SEQ_MOVIECLIP_RENDER_UNDISTORTED
@ SEQ_MOVIECLIP_RENDER_STABILIZED
@ SEQ_PROXY_SKIP_EXISTING
struct StripLookup StripLookup
struct MediaPresence MediaPresence
@ SEQ_SHOW_OFFSETS
@ SEQ_FLAG_DELETE
@ SEQ_FLAG_TEXT_EDITING_ACTIVE
@ SEQ_INVALID_EFFECT
@ SEQ_FILTERY
@ SEQ_SINGLE_FRAME_CONTENT
@ SEQ_REVERSE_FRAMES
@ SEQ_AUTO_PLAYBACK_RATE
@ SEQ_FLIPX
@ SEQ_RIGHTSEL
@ SEQ_MAKE_FLOAT
@ SEQ_EFFECT_NOT_LOADED
@ SEQ_IPO_FRAME_LOCKED
@ SEQ_IGNORE_CHANNEL_LOCK
@ SEQ_SCENE_STRIPS
@ SEQ_AUDIO_PITCH_ANIMATED
@ SEQ_USE_PROXY
@ SEQ_OVERLAP
@ SEQ_USE_EFFECT_DEFAULT_FADE
@ SEQ_FLIPY
@ SEQ_MULTIPLY_ALPHA
@ SEQ_SHOW_RETIMING
@ SEQ_AUDIO_VOLUME_ANIMATED
@ SEQ_USE_VIEWS
@ SEQ_AUDIO_PAN_ANIMATED
@ SEQ_USE_LINEAR_MODIFIERS
@ SEQ_SCENE_NO_ANNOTATION
@ SEQ_AUDIO_DRAW_WAVEFORM
@ SEQ_LEFTSEL
@ SEQ_TEXT_ITALIC
@ SEQ_TEXT_SHADOW
@ SEQ_TEXT_BOLD
@ SEQ_TEXT_OUTLINE
@ SEQ_TEXT_BOX
@ SEQ_EDIT_SHOW_MISSING_MEDIA
struct IntraFrameCache IntraFrameCache
struct TextVarsRuntime TextVarsRuntime
@ SEQ_EDIT_PROXY_DIR_STORAGE
@ SEQ_TRANSFORM_FILTER_CUBIC_BSPLINE
@ SEQ_TRANSFORM_FILTER_AUTO
@ SEQ_TRANSFORM_FILTER_CUBIC_MITCHELL
@ SEQ_TRANSFORM_FILTER_BILINEAR
@ SEQ_TRANSFORM_FILTER_BOX
@ SEQ_TRANSFORM_FILTER_NEAREST
@ SEQ_TEXT_ALIGN_X_RIGHT
@ SEQ_TEXT_ALIGN_X_CENTER
@ SEQ_TEXT_ALIGN_X_LEFT
@ STRIP_TYPE_SCREEN
@ STRIP_TYPE_GAUSSIAN_BLUR
@ STRIP_TYPE_EXCLUSION
@ STRIP_TYPE_GAMCROSS
@ STRIP_TYPE_SCENE
@ STRIP_TYPE_MOVIECLIP
@ STRIP_TYPE_LIN_LIGHT
@ STRIP_TYPE_COLORMIX
@ STRIP_TYPE_WIPE
@ STRIP_TYPE_OVERLAY
@ STRIP_TYPE_TEXT
@ STRIP_TYPE_SOUND_HD
@ STRIP_TYPE_SOUND_RAM
@ STRIP_TYPE_DARKEN
@ STRIP_TYPE_HARD_LIGHT
@ STRIP_TYPE_MAX
@ STRIP_TYPE_ADD
@ STRIP_TYPE_COLOR_BURN
@ STRIP_TYPE_HUE
@ STRIP_TYPE_LIGHTEN
@ STRIP_TYPE_TRANSFORM
@ STRIP_TYPE_IMAGE
@ STRIP_TYPE_BLEND_COLOR
@ STRIP_TYPE_MOVIE
@ STRIP_TYPE_GLOW
@ STRIP_TYPE_DODGE
@ STRIP_TYPE_SUB
@ STRIP_TYPE_MUL
@ STRIP_TYPE_SPEED
@ STRIP_TYPE_VALUE
@ STRIP_TYPE_EFFECT
@ STRIP_TYPE_COLOR
@ STRIP_TYPE_ADJUSTMENT
@ STRIP_TYPE_SOFT_LIGHT
@ STRIP_TYPE_META
@ STRIP_TYPE_LINEAR_BURN
@ STRIP_TYPE_MULTICAM
@ STRIP_TYPE_MASK
@ STRIP_TYPE_OVERDROP_REMOVED
@ STRIP_TYPE_ALPHAUNDER
@ STRIP_TYPE_CROSS
@ STRIP_TYPE_SATURATION
@ STRIP_TYPE_PIN_LIGHT
@ STRIP_TYPE_ALPHAOVER
@ STRIP_TYPE_DIFFERENCE
@ STRIP_TYPE_VIVID_LIGHT
@ STRIP_COLOR_NONE
@ STRIP_COLOR_03
@ STRIP_COLOR_01
@ STRIP_COLOR_04
@ STRIP_COLOR_TOT
@ STRIP_COLOR_06
@ STRIP_COLOR_02
@ STRIP_COLOR_08
@ STRIP_COLOR_09
@ STRIP_COLOR_07
@ STRIP_COLOR_05
@ SEQ_SPEED_STRETCH
@ SEQ_SPEED_MULTIPLY
@ SEQ_SPEED_LENGTH
@ SEQ_SPEED_FRAME_NUMBER
eSeqChannelFlag
@ SEQ_CHANNEL_MUTE
@ SEQ_CHANNEL_LOCK
@ NUM_SEQUENCE_MODIFIER_TYPES
@ seqModifierType_Curves
@ seqModifierType_Mask
@ seqModifierType_WhiteBalance
@ seqModifierType_BrightContrast
@ seqModifierType_ColorBalance
@ seqModifierType_SoundEqualizer
@ seqModifierType_HueCorrect
@ seqModifierType_Tonemap
@ SEQ_TONEMAP_RD_PHOTORECEPTOR
@ SEQ_TONEMAP_RH_SIMPLE
struct PrefetchJob PrefetchJob
@ SEQUENCE_MASK_TIME_RELATIVE
@ SEQUENCE_MASK_TIME_ABSOLUTE
@ SEQ_COLOR_BALANCE_INVERSE_GAIN
@ SEQ_COLOR_BALANCE_INVERSE_LIFT
@ SEQ_COLOR_BALANCE_INVERSE_SLOPE
@ SEQ_COLOR_BALANCE_INVERSE_POWER
@ SEQ_COLOR_BALANCE_INVERSE_OFFSET
@ SEQ_COLOR_BALANCE_INVERSE_GAMMA
struct FinalImageCache FinalImageCache
@ SEQ_PROXY_IMAGE_SIZE_100
@ SEQ_PROXY_IMAGE_SIZE_25
@ SEQ_PROXY_IMAGE_SIZE_50
@ SEQ_PROXY_IMAGE_SIZE_75
@ SEQ_COLOR_BALANCE_METHOD_LIFTGAMMAGAIN
@ SEQ_COLOR_BALANCE_METHOD_SLOPEOFFSETPOWER
@ SEQ_PROXY_TC_RECORD_RUN_NO_GAPS
@ SEQ_PROXY_TC_RECORD_RUN
@ SEQ_PROXY_TC_NONE
@ SEQ_EDIT_OVERLAY_FRAME_ABS
@ SEQ_EDIT_OVERLAY_FRAME_SHOW
@ SEQ_SPEED_USE_INTERPOLATION
@ SEQ_SPEED_UNUSED_3
@ SEQ_SPEED_UNUSED_1
@ SEQ_SPEED_UNUSED_2
@ SEQ_TEXT_ALIGN_Y_BOTTOM
@ SEQ_TEXT_ALIGN_Y_TOP
@ SEQ_TEXT_ALIGN_Y_CENTER
@ SEQ_STORAGE_PROXY_CUSTOM_FILE
@ SEQ_STORAGE_PROXY_CUSTOM_DIR
@ SEQUENCE_MODIFIER_MUTE
@ SEQUENCE_MODIFIER_EXPANDED
@ SEQ_ALPHA_PREMUL
@ SEQ_ALPHA_STRAIGHT
StripColorBalance color_balance
StripModifierData modifier
struct CurveMapping curve_mapping
struct EQCurveMappingData * next
struct EQCurveMappingData * prev
struct CurveMapping curve_mapping
IntraFrameCache * intra_frame_cache
ThumbnailCache * thumbnail_cache
MediaPresence * media_presence
FinalImageCache * final_image_cache
StripLookup * strip_lookup
SourceImageCache * source_image_cache
ListBase seqbase
ListBase * seqbasep
Strip * act_strip
ListBase channels
char proxy_dir[1024]
PrefetchJob * prefetch_job
int show_missing_media_flag
ListBase * displayed_channels
ListBase metastack
char act_sounddir[1024]
rctf overlay_frame_rect
char act_imagedir[1024]
EditingRuntime runtime
struct CurveMapping curve_mapping
struct MetaStack * prev
ListBase * old_channels
ListBase * oldbasep
struct MetaStack * next
double original_strip_frame_index
struct SeqTimelineChannel * next
struct SeqTimelineChannel * prev
struct StripAnim * prev
struct StripAnim * next
struct MovieReader * anim
struct StripConnection * prev
struct StripConnection * next
StripProxy * proxy
StripCrop * crop
struct StripData * prev
StripTransform * transform
StripElem * stripdata
char dirpath[768]
ColorManagedColorspaceSettings colorspace_settings
StripColorBalance *color_balance DNA_DEPRECATED
struct StripData * next
char filename[256]
struct StripModifierData * prev
struct StripModifierData * next
struct Strip * mask_strip
struct MovieReader * anim
SessionUID session_uid
struct Object * scene_camera
struct Stereo3dFormat * stereo3d_format
struct Ipo *ipo DNA_DEPRECATED
void * scene_sound
struct Strip * input1
char _pad3[3]
int8_t color_tag
int retiming_keys_num
char _pad4[4]
float pitch pan
float speed_fader
struct Mask * mask
ListBase connections
StripData * data
struct IDProperty * prop
struct Scene * scene
struct Strip * prev
struct MovieClip * clip
void * effectdata
struct bSound * sound
ListBase seqbase
float speed_factor
StripRuntime runtime
float media_playback_rate
float effect_fader
struct SeqRetimingKey * retiming_keys
char _pad6[4]
char _pad2[2]
struct IDProperty * system_properties
struct Strip * next
short streamindex
float blend_opacity
float sound_offset
char name[64]
ListBase modifiers
struct Strip * input2
ListBase channels
ListBase anims
float box_color[4]
char align_y DNA_DEPRECATED
TextVarsRuntime * runtime
float outline_color[4]
float shadow_color[4]
struct VFont * text_font