29
25
* ***** END GPL LICENSE BLOCK *****
31
#ifndef DNA_SEQUENCE_TYPES_H
32
#define DNA_SEQUENCE_TYPES_H
27
/** \file DNA_sequence_types.h
33
#ifndef __DNA_SEQUENCE_TYPES_H__
34
#define __DNA_SEQUENCE_TYPES_H__
34
37
#include "DNA_listBase.h"
36
/* needed for sound support */
37
#include "DNA_sound_types.h"
38
#include "DNA_vec_types.h"
42
/* strlens; 80= FILE_MAXFILE, 160= FILE_MAXDIR */
45
/* strlens; 256= FILE_MAXFILE, 768= FILE_MAXDIR */
44
47
typedef struct StripElem {
49
int orig_width, orig_height;
48
typedef struct TStripElem {
50
struct ImBuf *ibuf_comp;
51
struct TStripElem *se1, *se2, *se3;
57
52
typedef struct StripCrop {
77
72
} StripColorBalance;
79
74
typedef struct StripProxy {
75
char dir[768]; // custom directory for index and proxy files
76
// (defaults to BL_proxy)
78
char file[256]; // custom file
79
struct anim *anim; // custom proxy anim file
81
short tc; // time code in use
83
short quality; // proxy build quality
84
short build_size_flags;// size flags (see below) of all proxies
86
short build_tc_flags; // time code flags (see below) of all tc indices
88
90
typedef struct Strip {
89
91
struct Strip *next, *prev;
90
int rt, len, us, done;
91
93
int startstill, endstill;
94
StripElem *stripdata; /* only used as an array in IMAGE sequences(!),
95
* and as a 1-element array in MOVIE sequences,
96
* NULL for all other strip-types */
97
100
StripTransform *transform;
98
101
StripColorBalance *color_balance;
99
TStripElem *tstripdata;
100
TStripElem *tstripdata_startstill;
101
TStripElem *tstripdata_endstill;
102
struct ImBuf *ibuf_startstill;
103
struct ImBuf *ibuf_endstill;
107
105
typedef struct PluginSeq {
106
char name[1024]; /* 1024 = FILE_MAX */
132
130
struct Sequence *next, *prev;
133
131
void *tmp; /* tmp var for copying, and tagging for linked selection */
134
132
void *lib; /* needed (to be like ipo), else it will raise libdata warnings, this should never be used */
135
char name[24]; /* SEQ_NAME_MAXSTR - name, set by default and needs to be unique, for RNA paths */
133
char name[64]; /* SEQ_NAME_MAXSTR - name, set by default and needs to be unique, for RNA paths */
137
135
int flag, type; /*flags bitmap (see below) and the type of sequence*/
138
int len; /* the length of the contense of this strip - before handles are applied */
136
int len; /* the length of the contents of this strip - before handles are applied */
139
137
int start, startofs, endofs;
140
138
int startstill, endstill;
141
139
int machine, depth; /*machine - the strip channel, depth - the depth in the sequence when dealing with metastrips */
142
140
int startdisp, enddisp; /*starting and ending points in the sequence*/
144
142
float mul, handsize;
145
/* is sfra needed anymore? - it looks like its only used in one place */
146
int sfra; /* starting frame according to the timeline of the scene. */
145
short streamindex; /* streamindex for movie or sound files with several streams */
146
int multicam_source; /* for multicam source selection */
147
int clip_flag; /* MOVIECLIP render flags */
151
struct Ipo *ipo; // xxx depreceated... old animation system
151
struct Ipo *ipo DNA_DEPRECATED; /* old animation system, deprecated for 2.5 */
152
152
struct Scene *scene;
153
153
struct Object *scene_camera; /* override scene camera */
155
struct anim *anim; /* for MOVIE strips */
156
struct MovieClip *clip; /* for MOVIECLIP strips */
156
158
float effect_fader;
157
159
float speed_fader;
260
262
#define SEQ_SPEED_COMPRESS_IPO_Y 4
262
264
/* ***************** SEQUENCE ****************** */
263
#define SEQ_NAME_MAXSTR 24
265
#define SEQ_NAME_MAXSTR 64
266
#define SEQ_LEFTSEL 2
267
#define SEQ_RIGHTSEL 4
268
#define SEQ_OVERLAP 8
269
#define SEQ_FILTERY 16
271
#define SEQ_MAKE_PREMUL 64
272
#define SEQ_REVERSE_FRAMES 128
273
#define SEQ_IPO_FRAME_LOCKED 256
274
#define SEQ_EFFECT_NOT_LOADED 512
275
#define SEQ_FLAG_DELETE 1024
276
#define SEQ_FLIPX 2048
277
#define SEQ_FLIPY 4096
278
#define SEQ_MAKE_FLOAT 8192
279
#define SEQ_LOCK 16384
280
#define SEQ_USE_PROXY 32768
281
#define SEQ_USE_TRANSFORM 65536
282
#define SEQ_USE_CROP 131072
283
#define SEQ_USE_COLOR_BALANCE 262144
284
#define SEQ_USE_PROXY_CUSTOM_DIR 524288
285
#define SEQ_USE_PROXY_CUSTOM_FILE 2097152
286
#define SEQ_USE_EFFECT_DEFAULT_FADE 4194304
268
#define SEQ_LEFTSEL (1<<1)
269
#define SEQ_RIGHTSEL (1<<2)
270
#define SEQ_OVERLAP (1<<3)
271
#define SEQ_FILTERY (1<<4)
272
#define SEQ_MUTE (1<<5)
273
#define SEQ_MAKE_PREMUL (1<<6)
274
#define SEQ_REVERSE_FRAMES (1<<7)
275
#define SEQ_IPO_FRAME_LOCKED (1<<8)
276
#define SEQ_EFFECT_NOT_LOADED (1<<9)
277
#define SEQ_FLAG_DELETE (1<<10)
278
#define SEQ_FLIPX (1<<11)
279
#define SEQ_FLIPY (1<<12)
280
#define SEQ_MAKE_FLOAT (1<<13)
281
#define SEQ_LOCK (1<<14)
282
#define SEQ_USE_PROXY (1<<15)
283
#define SEQ_USE_TRANSFORM (1<<16)
284
#define SEQ_USE_CROP (1<<17)
285
#define SEQ_USE_COLOR_BALANCE (1<<18)
286
#define SEQ_USE_PROXY_CUSTOM_DIR (1<<19)
288
#define SEQ_USE_PROXY_CUSTOM_FILE (1<<21)
289
#define SEQ_USE_EFFECT_DEFAULT_FADE (1<<22)
291
// flags for whether those properties are animated or not
292
#define SEQ_AUDIO_VOLUME_ANIMATED (1<<24)
293
#define SEQ_AUDIO_PITCH_ANIMATED (1<<25)
294
#define SEQ_AUDIO_PAN_ANIMATED (1<<26)
295
#define SEQ_AUDIO_DRAW_WAVEFORM (1<<27)
297
#define SEQ_INVALID_EFFECT (1<<31)
288
299
/* convenience define for all selection flags */
289
300
#define SEQ_ALLSEL (SELECT+SEQ_LEFTSEL+SEQ_RIGHTSEL)
291
/* deprecated, dont use a flag anymore*/
302
/* deprecated, don't use a flag anymore*/
292
303
/*#define SEQ_ACTIVE 1048576*/
294
305
#define SEQ_COLOR_BALANCE_INVERSE_GAIN 1
295
306
#define SEQ_COLOR_BALANCE_INVERSE_GAMMA 2
296
307
#define SEQ_COLOR_BALANCE_INVERSE_LIFT 4
309
/* !!! has to be same as IMB_imbuf.h IMB_PROXY_... and IMB_TC_... */
311
#define SEQ_PROXY_IMAGE_SIZE_25 1
312
#define SEQ_PROXY_IMAGE_SIZE_50 2
313
#define SEQ_PROXY_IMAGE_SIZE_75 4
314
#define SEQ_PROXY_IMAGE_SIZE_100 8
316
#define SEQ_PROXY_TC_NONE 0
317
#define SEQ_PROXY_TC_RECORD_RUN 1
318
#define SEQ_PROXY_TC_FREE_RUN 2
319
#define SEQ_PROXY_TC_INTERP_REC_DATE_FREE_RUN 4
320
#define SEQ_PROXY_TC_RECORD_RUN_NO_GAPS 8
321
#define SEQ_PROXY_TC_ALL 15
298
323
/* seq->type WATCH IT: SEQ_EFFECT BIT is used to determine if this is an effect strip!!! */
299
324
#define SEQ_IMAGE 0
300
325
#define SEQ_META 1
320
346
#define SEQ_COLOR 28
321
347
#define SEQ_SPEED 29
322
348
#define SEQ_MULTICAM 30
323
#define SEQ_EFFECT_MAX 30
349
#define SEQ_ADJUSTMENT 31
350
#define SEQ_EFFECT_MAX 31
325
352
#define STRIPELEM_FAILED 0
326
353
#define STRIPELEM_OK 1
328
355
#define STRIPELEM_PREVIEW_DONE 1
357
#define SEQ_MOVIECLIP_RENDER_UNDISTORTED (1<<0)
358
#define SEQ_MOVIECLIP_RENDER_STABILIZED (1<<1)
330
360
#define SEQ_BLEND_REPLACE 0
331
361
/* all other BLEND_MODEs are simple SEQ_EFFECT ids and therefore identical
332
to the table above. (Only those effects that handle _exactly_ two inputs,
333
otherwise, you can't really blend, right :) !)
337
#define SEQ_HAS_PATH(_seq) (ELEM5((_seq)->type, SEQ_MOVIE, SEQ_IMAGE, SEQ_SOUND, SEQ_RAM_SOUND, SEQ_HD_SOUND))
362
* to the table above. (Only those effects that handle _exactly_ two inputs,
363
* otherwise, you can't really blend, right :) !)
367
#define SEQ_HAS_PATH(_seq) (ELEM4((_seq)->type, SEQ_MOVIE, SEQ_IMAGE, SEQ_RAM_SOUND, SEQ_HD_SOUND))