Blender  V3.3
DNA_sequence_types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
15 #pragma once
16 
17 #include "DNA_color_types.h"
18 #include "DNA_defs.h"
19 #include "DNA_listBase.h"
20 #include "DNA_session_uuid_types.h" /* for #SessionUUID */
21 #include "DNA_vec_types.h" /* for #rctf */
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 struct Ipo;
28 struct MovieClip;
29 struct Scene;
30 struct SequenceLookup;
31 struct VFont;
32 struct bSound;
33 
34 /* -------------------------------------------------------------------- */
38 /* strlens; 256= FILE_MAXFILE, 768= FILE_MAXDIR */
39 
40 typedef struct StripAnim {
41  struct StripAnim *next, *prev;
42  struct anim *anim;
44 
45 typedef struct StripElem {
46  char name[256];
49  float orig_fps;
51 
52 typedef struct StripCrop {
53  int top;
54  int bottom;
55  int left;
56  int right;
58 
59 typedef struct StripTransform {
60  float xofs;
61  float yofs;
62  float scale_x;
63  float scale_y;
64  float rotation;
66  float origin[2];
67  int filter;
69 
70 typedef struct StripColorBalance {
71  int method;
72  float lift[3];
73  float gamma[3];
74  float gain[3];
75  float slope[3];
76  float offset[3];
77  float power[3];
78  int flag;
79  char _pad[4];
80  /* float exposure; */
81  /* float saturation; */
83 
84 typedef struct StripProxy {
85  char dir[768]; /* custom directory for index and proxy files */
86  /* (defaults to BL_proxy) */
87 
88  char file[256]; /* custom file */
89  struct anim *anim; /* custom proxy anim file */
90 
91  short tc; /* time code in use */
92 
93  short quality; /* proxy build quality */
94  short build_size_flags; /* size flags (see below) of all proxies */
95  /* to build */
96  short build_tc_flags; /* time code flags (see below) of all tc indices */
97  /* to build */
98  short build_flags;
99  char storage;
100  char _pad[5];
102 
103 typedef struct Strip {
104  struct Strip *next, *prev;
105  int us, done;
113  char dir[768];
118 
119  /* color management */
122 
123 typedef struct SequenceRuntime {
126 
137 typedef struct Sequence {
138  struct Sequence *next, *prev;
140  void *tmp;
142  void *lib;
144  char name[64];
145 
147  int flag, type;
149  int len;
154  float start;
159  float startofs, endofs;
166  int machine;
167  int _pad3;
170  float sat;
171  float mul;
172  float _pad;
173 
174  short anim_preseek; /* UNUSED. */
176  short streamindex;
181 
183 
185  struct Ipo *ipo DNA_DEPRECATED;
186 
189  struct Scene *scene;
193  struct MovieClip *clip;
195  struct Mask *mask;
198 
200  /* DEPRECATED, only used for versioning. */
201  float speed_fader;
202 
203  /* pointers for effects: */
204  struct Sequence *seq1, *seq2, *seq3;
205 
208  ListBase channels; /* SeqTimelineChannel */
209 
211  struct bSound *sound;
212  void *scene_sound;
213  float volume;
214 
217  float strobe;
218 
220  void *effectdata;
221 
226 
229 
230  /* Tag color showed if `SEQ_TIMELINE_SHOW_STRIP_COLOR_TAG` is set. */
232 
234  char _pad4[2];
235 
237 
238  /* is sfra needed anymore? - it looks like its only used in one place */
240  int sfra;
241 
242  /* Multiview */
244  char _pad1[3];
246 
247  struct IDProperty *prop;
248 
249  /* modifiers */
251 
252  /* Playback rate of strip content in frames per second. */
254  /* Multiply strip playback speed. */
256 
259 
260 typedef struct MetaStack {
261  struct MetaStack *next, *prev;
265  /* the startdisp/enddisp when entering the meta */
266  int disp_range[2];
268 
269 typedef struct SeqTimelineChannel {
271  char name[64];
272  int index;
273  int flag;
275 
276 typedef struct EditingRuntime {
279 
280 typedef struct Editing {
284  void *_pad0;
288  ListBase channels; /* SeqTimelineChannel */
289 
290  /* Context vars, used to be static */
293  char act_imagedir[1024];
295  char act_sounddir[1024];
297  char proxy_dir[1024];
298 
300 
304 
305  struct SeqCache *cache;
306 
307  /* Cache control */
308  float recycle_max_cost; /* UNUSED only for versioning. */
310 
312 
313  /* Must be initialized only by seq_cache_create() */
315 
317  void *_pad1;
319 
322 /* -------------------------------------------------------------------- */
326 typedef struct WipeVars {
327  float edgeWidth, angle;
330 
331 typedef struct GlowVars {
333  float fMini;
334  float fClamp;
336  float fBoost;
338  float dDist;
339  int dQuality;
341  int bNoComp;
343 
344 typedef struct TransformVars {
345  float ScalexIni;
346  float ScaleyIni;
347  float xIni;
348  float yIni;
349  float rotIni;
350  int percent;
355 
356 typedef struct SolidColorVars {
357  float col[3];
358  char _pad[4];
360 
361 typedef struct SpeedControlVars {
362  float *frameMap;
363  /* DEPRECATED, only used for versioning. */
364  float globalSpeed;
365  int flags;
366 
368 
369  float speed_fader;
373 
375 enum {
380 };
381 
382 typedef struct GaussianBlurVars {
383  float size_x;
384  float size_y;
386 
387 typedef struct TextVars {
388  char text[512];
389  struct VFont *text_font;
391  float text_size;
392  float color[4], shadow_color[4], box_color[4];
393  float loc[2];
394  float wrap_width;
395  float box_margin;
396  char flag;
397  char align, align_y;
398  char _pad[5];
400 
402 enum {
403  SEQ_TEXT_SHADOW = (1 << 0),
404  SEQ_TEXT_BOX = (1 << 1),
405  SEQ_TEXT_BOLD = (1 << 2),
406  SEQ_TEXT_ITALIC = (1 << 3),
407 };
408 
410 enum {
414 };
415 
417 enum {
421 };
422 
423 #define SEQ_FONT_NOT_LOADED -2
424 
425 typedef struct ColorMixVars {
429  float factor;
431 
434 /* -------------------------------------------------------------------- */
438 typedef struct SequenceModifierData {
440  int type, flag;
442  char name[64];
443 
444  /* mask input, either sequence or mask ID */
447 
449  struct Mask *mask_id;
451 
452 typedef struct ColorBalanceModifierData {
454 
458 
459 enum {
462 };
463 
464 typedef struct CurvesModifierData {
466 
469 
470 typedef struct HueCorrectModifierData {
472 
475 
478 
479  float bright;
480  float contrast;
482 
486 
487 typedef struct WhiteBalanceModifierData {
489 
490  float white_value[3];
491  char _pad[4];
493 
496 
497  float key, offset, gamma;
499  int type;
501 
502 enum {
505 };
506 
509 /* -------------------------------------------------------------------- */
513 typedef struct SequencerScopes {
515 
516  struct ImBuf *zebra_ibuf;
522 
523 #define MAXSEQ 128
524 
525 #define SELECT 1
526 
528 #define SEQ_EDIT_OVERLAY_FRAME_SHOW 1
529 #define SEQ_EDIT_OVERLAY_FRAME_ABS 2
530 
531 #define SEQ_STRIP_OFSBOTTOM 0.05f
532 #define SEQ_STRIP_OFSTOP 0.95f
533 
534 /* Editor->proxy_storage */
535 /* store proxies in project directory */
536 #define SEQ_EDIT_PROXY_DIR_STORAGE 1
537 
538 /* SpeedControlVars->flags */
539 #define SEQ_SPEED_UNUSED_2 (1 << 0) /* cleared */
540 #define SEQ_SPEED_UNUSED_1 (1 << 1) /* cleared */
541 #define SEQ_SPEED_UNUSED_3 (1 << 2) /* cleared */
542 #define SEQ_SPEED_USE_INTERPOLATION (1 << 3)
543 
546 /* -------------------------------------------------------------------- */
550 #define SEQ_NAME_MAXSTR 64
551 
553 enum {
554  /* SELECT */
555  SEQ_LEFTSEL = (1 << 1),
556  SEQ_RIGHTSEL = (1 << 2),
557  SEQ_OVERLAP = (1 << 3),
558  SEQ_FILTERY = (1 << 4),
559  SEQ_MUTE = (1 << 5),
561  SEQ_REVERSE_FRAMES = (1 << 7),
564  SEQ_FLAG_DELETE = (1 << 10),
565  SEQ_FLIPX = (1 << 11),
566  SEQ_FLIPY = (1 << 12),
567  SEQ_MAKE_FLOAT = (1 << 13),
568  SEQ_LOCK = (1 << 14),
569  SEQ_USE_PROXY = (1 << 15),
572  SEQ_FLAG_UNUSED_18 = (1 << 18), /* cleared */
573  SEQ_FLAG_UNUSED_19 = (1 << 19), /* cleared */
574  SEQ_FLAG_UNUSED_21 = (1 << 21), /* cleared */
575 
578 
579  /* flags for whether those properties are animated or not */
584 
585  /* don't include Annotations in OpenGL previews of Scene strips */
587  SEQ_USE_VIEWS = (1 << 29),
588 
589  /* Access scene strips directly (like a meta-strip). */
590  SEQ_SCENE_STRIPS = (1 << 30),
591 
592  SEQ_INVALID_EFFECT = (1u << 31),
593 };
594 
596 enum {
597  SEQ_STORAGE_PROXY_CUSTOM_FILE = (1 << 1), /* store proxy in custom directory */
598  SEQ_STORAGE_PROXY_CUSTOM_DIR = (1 << 2), /* store proxy in custom file */
599 };
600 
601 /* convenience define for all selection flags */
602 #define SEQ_ALLSEL (SELECT + SEQ_LEFTSEL + SEQ_RIGHTSEL)
603 
604 /* Deprecated, don't use a flag anymore. */
605 // #define SEQ_ACTIVE 1048576
606 
607 #define SEQ_COLOR_BALANCE_INVERSE_GAIN 1
608 #define SEQ_COLOR_BALANCE_INVERSE_GAMMA 2
609 #define SEQ_COLOR_BALANCE_INVERSE_LIFT 4
610 #define SEQ_COLOR_BALANCE_INVERSE_SLOPE 8
611 #define SEQ_COLOR_BALANCE_INVERSE_OFFSET 16
612 #define SEQ_COLOR_BALANCE_INVERSE_POWER 32
613 
614 /* !!! has to be same as IMB_imbuf.h IMB_PROXY_... and IMB_TC_... */
615 
616 #define SEQ_PROXY_IMAGE_SIZE_25 1
617 #define SEQ_PROXY_IMAGE_SIZE_50 2
618 #define SEQ_PROXY_IMAGE_SIZE_75 4
619 #define SEQ_PROXY_IMAGE_SIZE_100 8
620 
621 #define SEQ_PROXY_TC_NONE 0
622 #define SEQ_PROXY_TC_RECORD_RUN 1
623 #define SEQ_PROXY_TC_FREE_RUN 2
624 #define SEQ_PROXY_TC_INTERP_REC_DATE_FREE_RUN 4
625 #define SEQ_PROXY_TC_RECORD_RUN_NO_GAPS 8
626 #define SEQ_PROXY_TC_ALL 15
627 
629 enum {
631 };
632 
634 enum {
637 };
638 
644 enum {
653 
663  /* SEQ_TYPE_PLUGIN = 24, */ /* Deprecated */
674 
675  /* Blend modes */
694 
696 };
697 
698 #define SEQ_MOVIECLIP_RENDER_UNDISTORTED (1 << 0)
699 #define SEQ_MOVIECLIP_RENDER_STABILIZED (1 << 1)
700 
701 #define SEQ_BLEND_REPLACE 0
702 /* all other BLEND_MODEs are simple SEQ_TYPE_EFFECT ids and therefore identical
703  * to the table above. (Only those effects that handle _exactly_ two inputs,
704  * otherwise, you can't really blend, right :) !)
705  */
706 
707 #define SEQ_HAS_PATH(_seq) \
708  (ELEM((_seq)->type, SEQ_TYPE_MOVIE, SEQ_TYPE_IMAGE, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD))
709 
710 /* modifiers */
711 
713 enum {
721  /* Keep last. */
723 };
724 
726 enum {
729 };
730 
731 enum {
734 };
735 
736 enum {
737  /* Mask animation will be remapped relative to the strip start frame. */
739  /* Global (scene) frame number will be used to access the mask. */
741 };
742 
753 enum {
758 
759  /* For lookup purposes */
762 
763  SEQ_CACHE_OVERRIDE = (1 << 4),
764 
765  /* enable cache visualization overlay in timeline UI */
767  SEQ_CACHE_VIEW_RAW = (1 << 6),
771 
775 };
776 
778 typedef enum SequenceColorTag {
789 
792 
793 /* Sequence->StripTransform->filter */
794 enum {
797 };
798 
799 typedef enum eSeqChannelFlag {
800  SEQ_CHANNEL_LOCK = (1 << 0),
801  SEQ_CHANNEL_MUTE = (1 << 1),
803 
806 #ifdef __cplusplus
807 }
808 #endif
These structs are the foundation for all linked lists in the library system.
struct SpeedControlVars SpeedControlVars
struct WipeVars WipeVars
@ SEQ_TYPE_TRANSFORM
@ SEQ_TYPE_COLOR_BURN
@ SEQ_TYPE_HARD_LIGHT
@ SEQ_TYPE_EXCLUSION
@ SEQ_TYPE_SOUND_RAM
@ SEQ_TYPE_CROSS
@ SEQ_TYPE_SOUND_HD
@ SEQ_TYPE_GLOW
@ SEQ_TYPE_MAX
@ SEQ_TYPE_VALUE
@ SEQ_TYPE_COLORMIX
@ SEQ_TYPE_WIPE
@ SEQ_TYPE_META
@ SEQ_TYPE_OVERDROP
@ SEQ_TYPE_PIN_LIGHT
@ SEQ_TYPE_ALPHAUNDER
@ SEQ_TYPE_DODGE
@ SEQ_TYPE_SCENE
@ SEQ_TYPE_HUE
@ SEQ_TYPE_LINEAR_BURN
@ SEQ_TYPE_GAMCROSS
@ SEQ_TYPE_MULTICAM
@ SEQ_TYPE_BLEND_COLOR
@ SEQ_TYPE_MOVIECLIP
@ SEQ_TYPE_DARKEN
@ SEQ_TYPE_MUL
@ SEQ_TYPE_GAUSSIAN_BLUR
@ SEQ_TYPE_ADD
@ SEQ_TYPE_ALPHAOVER
@ SEQ_TYPE_TEXT
@ SEQ_TYPE_IMAGE
@ SEQ_TYPE_SCREEN
@ SEQ_TYPE_SOFT_LIGHT
@ SEQ_TYPE_SUB
@ SEQ_TYPE_VIVID_LIGHT
@ SEQ_TYPE_OVERLAY
@ SEQ_TYPE_SPEED
@ SEQ_TYPE_COLOR
@ SEQ_TYPE_SATURATION
@ SEQ_TYPE_LIN_LIGHT
@ SEQ_TYPE_EFFECT
@ SEQ_TYPE_MOVIE
@ SEQ_TYPE_MASK
@ SEQ_TYPE_DIFFERENCE
@ SEQ_TYPE_ADJUSTMENT
@ SEQ_TYPE_LIGHTEN
struct ColorMixVars ColorMixVars
struct StripColorBalance StripColorBalance
@ SEQUENCE_MODIFIER_MUTE
@ SEQUENCE_MODIFIER_EXPANDED
struct TransformVars TransformVars
struct StripAnim StripAnim
@ SEQ_ALPHA_PREMUL
@ SEQ_ALPHA_STRAIGHT
struct WhiteBalanceModifierData WhiteBalanceModifierData
@ SEQ_TEXT_ALIGN_X_RIGHT
@ SEQ_TEXT_ALIGN_X_CENTER
@ SEQ_TEXT_ALIGN_X_LEFT
@ NUM_SEQUENCE_MODIFIER_TYPES
@ seqModifierType_Curves
@ seqModifierType_Mask
@ seqModifierType_WhiteBalance
@ seqModifierType_BrightContrast
@ seqModifierType_ColorBalance
@ seqModifierType_HueCorrect
@ seqModifierType_Tonemap
@ SEQUENCE_MASK_INPUT_STRIP
@ SEQUENCE_MASK_INPUT_ID
struct ColorBalanceModifierData ColorBalanceModifierData
struct CurvesModifierData CurvesModifierData
struct SequencerScopes SequencerScopes
struct SeqTimelineChannel SeqTimelineChannel
struct GlowVars GlowVars
@ SEQ_STORAGE_PROXY_CUSTOM_FILE
@ SEQ_STORAGE_PROXY_CUSTOM_DIR
SequenceColorTag
@ SEQUENCE_COLOR_NONE
@ SEQUENCE_COLOR_05
@ SEQUENCE_COLOR_TOT
@ SEQUENCE_COLOR_02
@ SEQUENCE_COLOR_04
@ SEQUENCE_COLOR_06
@ SEQUENCE_COLOR_01
@ SEQUENCE_COLOR_09
@ SEQUENCE_COLOR_08
@ SEQUENCE_COLOR_03
@ SEQUENCE_COLOR_07
struct StripTransform StripTransform
struct SequenceModifierData SequenceModifierData
@ SEQ_CACHE_ALL_TYPES
@ SEQ_CACHE_VIEW_RAW
@ SEQ_CACHE_STORE_PREPROCESSED
@ SEQ_CACHE_STORE_RAW
@ SEQ_CACHE_STORE_THUMBNAIL
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_CACHE_VIEW_ENABLE
@ SEQ_CACHE_STORE_COMPOSITE
@ SEQ_CACHE_VIEW_FINAL_OUT
@ SEQ_CACHE_DISK_CACHE_ENABLE
@ SEQ_CACHE_VIEW_COMPOSITE
@ SEQ_CACHE_PREFETCH_ENABLE
@ SEQ_CACHE_VIEW_PREPROCESSED
@ SEQ_CACHE_OVERRIDE
struct StripCrop StripCrop
struct Editing Editing
struct SequencerTonemapModifierData SequencerTonemapModifierData
@ SEQ_TONEMAP_RD_PHOTORECEPTOR
@ SEQ_TONEMAP_RH_SIMPLE
struct EditingRuntime EditingRuntime
struct SequenceRuntime SequenceRuntime
@ SEQUENCE_MASK_TIME_RELATIVE
@ SEQUENCE_MASK_TIME_ABSOLUTE
@ SEQ_TEXT_ALIGN_Y_BOTTOM
@ SEQ_TEXT_ALIGN_Y_TOP
@ SEQ_TEXT_ALIGN_Y_CENTER
struct Sequence Sequence
@ SEQ_SPEED_STRETCH
@ SEQ_SPEED_MULTIPLY
@ SEQ_SPEED_LENGTH
@ SEQ_SPEED_FRAME_NUMBER
@ SEQ_COLOR_BALANCE_METHOD_LIFTGAMMAGAIN
@ SEQ_COLOR_BALANCE_METHOD_SLOPEOFFSETPOWER
eSeqChannelFlag
@ SEQ_CHANNEL_MUTE
@ SEQ_CHANNEL_LOCK
struct TextVars TextVars
struct GaussianBlurVars GaussianBlurVars
struct SolidColorVars SolidColorVars
@ SEQ_MUTE
@ SEQ_FLAG_UNUSED_18
@ SEQ_FLAG_DELETE
@ SEQ_INVALID_EFFECT
@ SEQ_FILTERY
@ SEQ_REVERSE_FRAMES
@ SEQ_AUTO_PLAYBACK_RATE
@ SEQ_FLIPX
@ SEQ_RIGHTSEL
@ SEQ_MAKE_FLOAT
@ SEQ_FLAG_SKIP_THUMBNAILS
@ SEQ_EFFECT_NOT_LOADED
@ SEQ_FLAG_UNUSED_19
@ 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_LOCK
@ SEQ_FLAG_UNUSED_21
@ 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_PROXY_SKIP_EXISTING
struct HueCorrectModifierData HueCorrectModifierData
@ SEQ_TEXT_ITALIC
@ SEQ_TEXT_SHADOW
@ SEQ_TEXT_BOLD
@ SEQ_TEXT_BOX
struct StripProxy StripProxy
struct MetaStack MetaStack
@ SEQ_TRANSFORM_FILTER_BILINEAR
@ SEQ_TRANSFORM_FILTER_NEAREST
struct StripElem StripElem
struct Strip Strip
struct BrightContrastModifierData BrightContrastModifierData
struct SequencerMaskModifierData SequencerMaskModifierData
__int64 int64_t
Definition: stdint.h:89
signed char int8_t
Definition: stdint.h:75
SequenceModifierData modifier
StripColorBalance color_balance
SequenceModifierData modifier
SequenceModifierData modifier
struct CurveMapping curve_mapping
struct SequenceLookup * sequence_lookup
ListBase seqbase
struct PrefetchJob * prefetch_job
ListBase * seqbasep
Sequence * act_seq
ListBase channels
char proxy_dir[1024]
int64_t disk_cache_timestamp
ListBase * displayed_channels
float recycle_max_cost
ListBase metastack
char act_sounddir[1024]
rctf overlay_frame_rect
char act_imagedir[1024]
struct SeqCache * cache
int overlay_frame_flag
EditingRuntime runtime
SequenceModifierData modifier
struct CurveMapping curve_mapping
Sequence * parseq
struct MetaStack * prev
ListBase * old_channels
ListBase * oldbasep
struct MetaStack * next
struct SeqTimelineChannel * next
struct SeqTimelineChannel * prev
struct SequenceModifierData * next
struct SequenceModifierData * prev
struct Sequence * mask_sequence
SessionUUID session_uuid
float media_playback_rate
struct MovieClip * clip
struct Scene * scene
ListBase anims
struct Object * scene_camera
struct Sequence * seq3
void * scene_sound
struct Mask * mask
ListBase channels
float pitch DNA_DEPRECATED
struct Sequence * prev
ListBase modifiers
ListBase seqbase
struct bSound * sound
struct Sequence * seq1
struct Sequence * seq2
struct Sequence * next
float pitch pan
struct IDProperty * prop
SequenceRuntime runtime
struct Stereo3dFormat * stereo3d_format
struct Ipo *ipo DNA_DEPRECATED
SequenceModifierData modifier
struct ImBuf * reference_ibuf
struct ImBuf * waveform_ibuf
struct ImBuf * sep_waveform_ibuf
struct ImBuf * zebra_ibuf
struct ImBuf * histogram_ibuf
struct ImBuf * vector_ibuf
struct StripAnim * prev
struct anim * anim
struct StripAnim * next
char name[256]
struct anim * anim
char file[256]
short build_size_flags
ColorManagedColorspaceSettings colorspace_settings
StripColorBalance *color_balance DNA_DEPRECATED
StripProxy * proxy
struct Strip * prev
StripTransform * transform
StripElem * stripdata
char dir[768]
StripCrop * crop
struct Strip * next
float box_color[4]
float color[4]
float shadow_color[4]
struct VFont * text_font
char text[512]
SequenceModifierData modifier
Definition: IMB_anim.h:71
float pitch