1 /* 2 * This program is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU General Public License 4 * as published by the Free Software Foundation; either version 2 5 * of the License, or (at your option) any later version. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software Foundation, 14 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 15 * 16 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 17 * All rights reserved. 18 */ 19 /** \file 20 * \ingroup DNA 21 * 22 * Structs for use by the 'Sequencer' (Video Editor) 23 * 24 * Note on terminology 25 * - #Sequence: video/effect/audio data you can select and manipulate in the sequencer. 26 * - #Sequence.machine: Strange name for the channel. 27 * - #Strip: The data referenced by the #Sequence 28 * - Meta Strip (SEQ_TYPE_META): Support for nesting Sequences. 29 */ 30 31 #pragma once 32 33 #include "DNA_color_types.h" 34 #include "DNA_defs.h" 35 #include "DNA_listBase.h" 36 #include "DNA_session_uuid_types.h" 37 #include "DNA_vec_types.h" 38 #include "DNA_vfont_types.h" 39 40 #ifdef __cplusplus 41 extern "C" { 42 #endif 43 44 struct Ipo; 45 struct MovieClip; 46 struct Scene; 47 struct bSound; 48 49 /* strlens; 256= FILE_MAXFILE, 768= FILE_MAXDIR */ 50 51 typedef struct StripAnim { 52 struct StripAnim *next, *prev; 53 struct anim *anim; 54 } StripAnim; 55 56 typedef struct StripElem { 57 char name[256]; 58 int orig_width, orig_height; 59 } StripElem; 60 61 typedef struct StripCrop { 62 int top; 63 int bottom; 64 int left; 65 int right; 66 } StripCrop; 67 68 typedef struct StripTransform { 69 int xofs; 70 int yofs; 71 } StripTransform; 72 73 typedef struct StripColorBalance { 74 float lift[3]; 75 float gamma[3]; 76 float gain[3]; 77 int flag; 78 char _pad[4]; 79 /* float exposure; */ 80 /* float saturation; */ 81 } StripColorBalance; 82 83 typedef struct StripProxy { 84 char dir[768]; /* custom directory for index and proxy files */ 85 /* (defaults to BL_proxy) */ 86 87 char file[256]; /* custom file */ 88 struct anim *anim; /* custom proxy anim file */ 89 90 short tc; /* time code in use */ 91 92 short quality; /* proxy build quality */ 93 short build_size_flags; /* size flags (see below) of all proxies */ 94 /* to build */ 95 short build_tc_flags; /* time code flags (see below) of all tc indices */ 96 /* to build */ 97 short build_flags; 98 char storage; 99 char _pad[5]; 100 } StripProxy; 101 102 typedef struct Strip { 103 struct Strip *next, *prev; 104 int us, done; 105 int startstill, endstill; 106 /** 107 * Only used as an array in IMAGE sequences(!), 108 * and as a 1-element array in MOVIE sequences, 109 * NULL for all other strip-types. 110 */ 111 StripElem *stripdata; 112 char dir[768]; 113 StripProxy *proxy; 114 StripCrop *crop; 115 StripTransform *transform; 116 StripColorBalance *color_balance DNA_DEPRECATED; 117 118 /* color management */ 119 ColorManagedColorspaceSettings colorspace_settings; 120 } Strip; 121 122 typedef struct SequenceRuntime { 123 SessionUUID session_uuid; 124 } SequenceRuntime; 125 126 /** 127 * The sequence structure is the basic struct used by any strip. 128 * each of the strips uses a different sequence structure. 129 * 130 * \warning The first part identical to ID (for use in ipo's) 131 * the comment above is historic, probably we can drop the ID compatibility, 132 * but take care making this change. 133 * 134 * \warning This is really a 'Strip' in the UI!, name is highly confusing. 135 */ 136 typedef struct Sequence { 137 struct Sequence *next, *prev; 138 /** Tmp var for copying, and tagging for linked selection. */ 139 void *tmp; 140 /** Needed (to be like ipo), else it will raise libdata warnings, this should never be used. */ 141 void *lib; 142 /** SEQ_NAME_MAXSTR - name, set by default and needs to be unique, for RNA paths. */ 143 char name[64]; 144 145 /** Flags bitmap (see below) and the type of sequence. */ 146 int flag, type; 147 /** The length of the contents of this strip - before handles are applied. */ 148 int len; 149 /** 150 * Start frame of contents of strip in absolute frame coordinates. 151 * For metastrips start of first strip startdisp. 152 */ 153 int start; 154 /** 155 * Frames after the first frame where display starts, 156 * frames before the last frame where display ends. 157 */ 158 int startofs, endofs; 159 /** 160 * Frames that use the first frame before data begins, 161 * frames that use the last frame after data ends. 162 */ 163 int startstill, endstill; 164 /** Machine: the strip channel, depth the depth in the sequence when dealing with metastrips. */ 165 int machine, depth; 166 /** Starting and ending points of the strip in the sequence. */ 167 int startdisp, enddisp; 168 float sat; 169 float mul, handsize; 170 171 short anim_preseek; 172 /** Streamindex for movie or sound files with several streams. */ 173 short streamindex; 174 /** For multicam source selection. */ 175 int multicam_source; 176 /** MOVIECLIP render flags. */ 177 int clip_flag; 178 179 Strip *strip; 180 181 /** Old animation system, deprecated for 2.5. */ 182 struct Ipo *ipo DNA_DEPRECATED; 183 184 /** these ID vars should never be NULL but can be when linked libs fail to load, 185 * so check on access */ 186 struct Scene *scene; 187 /** Override scene camera. */ 188 struct Object *scene_camera; 189 /** For MOVIECLIP strips. */ 190 struct MovieClip *clip; 191 /** For MASK strips. */ 192 struct Mask *mask; 193 /** For MOVIE strips. */ 194 ListBase anims; 195 196 float effect_fader; 197 float speed_fader; 198 199 /* pointers for effects: */ 200 struct Sequence *seq1, *seq2, *seq3; 201 202 /** List of strips for metastrips. */ 203 ListBase seqbase; 204 205 /** The linked "bSound" object. */ 206 struct bSound *sound; 207 void *scene_sound; 208 float volume; 209 210 /** Pitch (-0.1..10), pan -2..2. */ 211 float pitch, pan; 212 float strobe; 213 214 /** Struct pointer for effect settings. */ 215 void *effectdata; 216 217 /** Only use part of animation file. */ 218 int anim_startofs; 219 /** Is subtle different to startofs / endofs. */ 220 int anim_endofs; 221 222 int blend_mode; 223 float blend_opacity; 224 225 /* is sfra needed anymore? - it looks like its only used in one place */ 226 /** Starting frame according to the timeline of the scene. */ 227 int sfra; 228 229 char alpha_mode; 230 char _pad[2]; 231 232 /* Multiview */ 233 char views_format; 234 struct Stereo3dFormat *stereo3d_format; 235 236 struct IDProperty *prop; 237 238 /* modifiers */ 239 ListBase modifiers; 240 241 int cache_flag; 242 int _pad2[3]; 243 244 SequenceRuntime runtime; 245 } Sequence; 246 247 typedef struct MetaStack { 248 struct MetaStack *next, *prev; 249 ListBase *oldbasep; 250 Sequence *parseq; 251 /* the startdisp/enddisp when entering the meta */ 252 int disp_range[2]; 253 } MetaStack; 254 255 typedef struct Editing { 256 /** Pointer to the current list of seq's being edited (can be within a meta strip). */ 257 ListBase *seqbasep; 258 /** Pointer to the top-most seq's. */ 259 ListBase seqbase; 260 ListBase metastack; 261 262 /* Context vars, used to be static */ 263 Sequence *act_seq; 264 /** 1024 = FILE_MAX. */ 265 char act_imagedir[1024]; 266 /** 1024 = FILE_MAX. */ 267 char act_sounddir[1024]; 268 /** 1024 = FILE_MAX. */ 269 char proxy_dir[1024]; 270 271 int over_ofs, over_cfra; 272 int over_flag, proxy_storage; 273 rctf over_border; 274 275 struct SeqCache *cache; 276 277 /* Cache control */ 278 float recycle_max_cost; 279 int cache_flag; 280 281 struct PrefetchJob *prefetch_job; 282 283 /* Must be initialized only by BKE_sequencer_cache_create() */ 284 int64_t disk_cache_timestamp; 285 } Editing; 286 287 /* ************* Effect Variable Structs ********* */ 288 typedef struct WipeVars { 289 float edgeWidth, angle; 290 short forward, wipetype; 291 } WipeVars; 292 293 typedef struct GlowVars { 294 /** Minimum intensity to trigger a glow. */ 295 float fMini; 296 float fClamp; 297 /** Amount to multiply glow intensity. */ 298 float fBoost; 299 /** Radius of glow blurring. */ 300 float dDist; 301 int dQuality; 302 /** SHOW/HIDE glow buffer. */ 303 int bNoComp; 304 } GlowVars; 305 306 typedef struct TransformVars { 307 float ScalexIni; 308 float ScaleyIni; 309 float xIni; 310 float yIni; 311 float rotIni; 312 int percent; 313 int interpolation; 314 /** Preserve aspect/ratio when scaling. */ 315 int uniform_scale; 316 } TransformVars; 317 318 typedef struct SolidColorVars { 319 float col[3]; 320 char _pad[4]; 321 } SolidColorVars; 322 323 typedef struct SpeedControlVars { 324 float *frameMap; 325 float globalSpeed; 326 int flags; 327 int length; 328 int lastValidFrame; 329 } SpeedControlVars; 330 331 typedef struct GaussianBlurVars { 332 float size_x; 333 float size_y; 334 } GaussianBlurVars; 335 336 typedef struct TextVars { 337 char text[512]; 338 VFont *text_font; 339 int text_blf_id; 340 int text_size; 341 float color[4], shadow_color[4]; 342 float loc[2]; 343 float wrap_width; 344 char flag; 345 char align, align_y; 346 char _pad[1]; 347 } TextVars; 348 349 /* TextVars.flag */ 350 enum { 351 SEQ_TEXT_SHADOW = (1 << 0), 352 }; 353 354 /* TextVars.align */ 355 enum { 356 SEQ_TEXT_ALIGN_X_LEFT = 0, 357 SEQ_TEXT_ALIGN_X_CENTER = 1, 358 SEQ_TEXT_ALIGN_X_RIGHT = 2, 359 }; 360 361 /* TextVars.align_y */ 362 enum { 363 SEQ_TEXT_ALIGN_Y_TOP = 0, 364 SEQ_TEXT_ALIGN_Y_CENTER = 1, 365 SEQ_TEXT_ALIGN_Y_BOTTOM = 2, 366 }; 367 368 #define SEQ_FONT_NOT_LOADED -2 369 370 typedef struct ColorMixVars { 371 /** Value from SEQ_TYPE_XXX enumeration. */ 372 int blend_effect; 373 /** Blend factor [0.0f, 1.0f]. */ 374 float factor; 375 } ColorMixVars; 376 377 /* ***************** Sequence modifiers ****************** */ 378 379 typedef struct SequenceModifierData { 380 struct SequenceModifierData *next, *prev; 381 int type, flag; 382 /** MAX_NAME. */ 383 char name[64]; 384 385 /* mask input, either sequence or mask ID */ 386 int mask_input_type; 387 int mask_time; 388 389 struct Sequence *mask_sequence; 390 struct Mask *mask_id; 391 } SequenceModifierData; 392 393 typedef struct ColorBalanceModifierData { 394 SequenceModifierData modifier; 395 396 StripColorBalance color_balance; 397 float color_multiply; 398 } ColorBalanceModifierData; 399 400 typedef struct CurvesModifierData { 401 SequenceModifierData modifier; 402 403 struct CurveMapping curve_mapping; 404 } CurvesModifierData; 405 406 typedef struct HueCorrectModifierData { 407 SequenceModifierData modifier; 408 409 struct CurveMapping curve_mapping; 410 } HueCorrectModifierData; 411 412 typedef struct BrightContrastModifierData { 413 SequenceModifierData modifier; 414 415 float bright; 416 float contrast; 417 } BrightContrastModifierData; 418 419 typedef struct SequencerMaskModifierData { 420 SequenceModifierData modifier; 421 } SequencerMaskModifierData; 422 423 typedef struct WhiteBalanceModifierData { 424 SequenceModifierData modifier; 425 426 float white_value[3]; 427 char _pad[4]; 428 } WhiteBalanceModifierData; 429 430 typedef struct SequencerTonemapModifierData { 431 SequenceModifierData modifier; 432 433 float key, offset, gamma; 434 float intensity, contrast, adaptation, correction; 435 int type; 436 } SequencerTonemapModifierData; 437 438 enum { 439 SEQ_TONEMAP_RH_SIMPLE = 0, 440 SEQ_TONEMAP_RD_PHOTORECEPTOR = 1, 441 }; 442 443 /* ***************** Scopes ****************** */ 444 445 typedef struct SequencerScopes { 446 struct ImBuf *reference_ibuf; 447 448 struct ImBuf *zebra_ibuf; 449 struct ImBuf *waveform_ibuf; 450 struct ImBuf *sep_waveform_ibuf; 451 struct ImBuf *vector_ibuf; 452 struct ImBuf *histogram_ibuf; 453 } SequencerScopes; 454 455 #define MAXSEQ 32 456 457 #define SELECT 1 458 459 /* Editor->over_flag */ 460 #define SEQ_EDIT_OVERLAY_SHOW 1 461 #define SEQ_EDIT_OVERLAY_ABS 2 462 463 #define SEQ_STRIP_OFSBOTTOM 0.05f 464 #define SEQ_STRIP_OFSTOP 0.95f 465 466 /* Editor->proxy_storage */ 467 /* store proxies in project directory */ 468 #define SEQ_EDIT_PROXY_DIR_STORAGE 1 469 470 /* SpeedControlVars->flags */ 471 #define SEQ_SPEED_INTEGRATE (1 << 0) 472 #define SEQ_SPEED_UNUSED_1 (1 << 1) /* cleared */ 473 #define SEQ_SPEED_COMPRESS_IPO_Y (1 << 2) 474 #define SEQ_SPEED_USE_INTERPOLATION (1 << 3) 475 476 /* ***************** SEQUENCE ****************** */ 477 #define SEQ_NAME_MAXSTR 64 478 479 /* seq->flag */ 480 enum { 481 /* SELECT */ 482 SEQ_LEFTSEL = (1 << 1), 483 SEQ_RIGHTSEL = (1 << 2), 484 SEQ_OVERLAP = (1 << 3), 485 SEQ_FILTERY = (1 << 4), 486 SEQ_MUTE = (1 << 5), 487 SEQ_FLAG_UNUSED_6 = (1 << 6), /* cleared */ 488 SEQ_REVERSE_FRAMES = (1 << 7), 489 SEQ_IPO_FRAME_LOCKED = (1 << 8), 490 SEQ_EFFECT_NOT_LOADED = (1 << 9), 491 SEQ_FLAG_DELETE = (1 << 10), 492 SEQ_FLIPX = (1 << 11), 493 SEQ_FLIPY = (1 << 12), 494 SEQ_MAKE_FLOAT = (1 << 13), 495 SEQ_LOCK = (1 << 14), 496 SEQ_USE_PROXY = (1 << 15), 497 SEQ_USE_TRANSFORM = (1 << 16), 498 SEQ_USE_CROP = (1 << 17), 499 SEQ_FLAG_UNUSED_18 = (1 << 18), /* cleared */ 500 SEQ_FLAG_UNUSED_19 = (1 << 19), /* cleared */ 501 SEQ_FLAG_UNUSED_21 = (1 << 21), /* cleared */ 502 503 SEQ_USE_EFFECT_DEFAULT_FADE = (1 << 22), 504 SEQ_USE_LINEAR_MODIFIERS = (1 << 23), 505 506 /* flags for whether those properties are animated or not */ 507 SEQ_AUDIO_VOLUME_ANIMATED = (1 << 24), 508 SEQ_AUDIO_PITCH_ANIMATED = (1 << 25), 509 SEQ_AUDIO_PAN_ANIMATED = (1 << 26), 510 SEQ_AUDIO_DRAW_WAVEFORM = (1 << 27), 511 512 /* don't include Grease Pencil in OpenGL previews of Scene strips */ 513 SEQ_SCENE_NO_GPENCIL = (1 << 28), 514 SEQ_USE_VIEWS = (1 << 29), 515 516 /* access scene strips directly (like a metastrip) */ 517 SEQ_SCENE_STRIPS = (1 << 30), 518 519 SEQ_INVALID_EFFECT = (1u << 31), 520 }; 521 522 /* StripProxy->storage */ 523 enum { 524 SEQ_STORAGE_PROXY_CUSTOM_FILE = (1 << 1), /* store proxy in custom directory */ 525 SEQ_STORAGE_PROXY_CUSTOM_DIR = (1 << 2), /* store proxy in custom file */ 526 }; 527 528 /* convenience define for all selection flags */ 529 #define SEQ_ALLSEL (SELECT + SEQ_LEFTSEL + SEQ_RIGHTSEL) 530 531 /* deprecated, don't use a flag anymore*/ 532 /*#define SEQ_ACTIVE 1048576*/ 533 534 #define SEQ_COLOR_BALANCE_INVERSE_GAIN 1 535 #define SEQ_COLOR_BALANCE_INVERSE_GAMMA 2 536 #define SEQ_COLOR_BALANCE_INVERSE_LIFT 4 537 538 /* !!! has to be same as IMB_imbuf.h IMB_PROXY_... and IMB_TC_... */ 539 540 #define SEQ_PROXY_IMAGE_SIZE_25 1 541 #define SEQ_PROXY_IMAGE_SIZE_50 2 542 #define SEQ_PROXY_IMAGE_SIZE_75 4 543 #define SEQ_PROXY_IMAGE_SIZE_100 8 544 545 #define SEQ_PROXY_TC_NONE 0 546 #define SEQ_PROXY_TC_RECORD_RUN 1 547 #define SEQ_PROXY_TC_FREE_RUN 2 548 #define SEQ_PROXY_TC_INTERP_REC_DATE_FREE_RUN 4 549 #define SEQ_PROXY_TC_RECORD_RUN_NO_GAPS 8 550 #define SEQ_PROXY_TC_ALL 15 551 552 /* SeqProxy->build_flags */ 553 enum { 554 SEQ_PROXY_SKIP_EXISTING = 1, 555 }; 556 557 /* seq->alpha_mode */ 558 enum { 559 SEQ_ALPHA_STRAIGHT = 0, 560 SEQ_ALPHA_PREMUL = 1, 561 }; 562 563 /* seq->type WATCH IT: SEQ_TYPE_EFFECT BIT is used to determine if this is an effect strip!!! */ 564 enum { 565 SEQ_TYPE_IMAGE = 0, 566 SEQ_TYPE_META = 1, 567 SEQ_TYPE_SCENE = 2, 568 SEQ_TYPE_MOVIE = 3, 569 SEQ_TYPE_SOUND_RAM = 4, 570 SEQ_TYPE_SOUND_HD = 5, 571 SEQ_TYPE_MOVIECLIP = 6, 572 SEQ_TYPE_MASK = 7, 573 574 SEQ_TYPE_EFFECT = 8, 575 SEQ_TYPE_CROSS = 8, 576 SEQ_TYPE_ADD = 9, 577 SEQ_TYPE_SUB = 10, 578 SEQ_TYPE_ALPHAOVER = 11, 579 SEQ_TYPE_ALPHAUNDER = 12, 580 SEQ_TYPE_GAMCROSS = 13, 581 SEQ_TYPE_MUL = 14, 582 SEQ_TYPE_OVERDROP = 15, 583 /* SEQ_TYPE_PLUGIN = 24, */ /* Deprecated */ 584 SEQ_TYPE_WIPE = 25, 585 SEQ_TYPE_GLOW = 26, 586 SEQ_TYPE_TRANSFORM = 27, 587 SEQ_TYPE_COLOR = 28, 588 SEQ_TYPE_SPEED = 29, 589 SEQ_TYPE_MULTICAM = 30, 590 SEQ_TYPE_ADJUSTMENT = 31, 591 SEQ_TYPE_GAUSSIAN_BLUR = 40, 592 SEQ_TYPE_TEXT = 41, 593 SEQ_TYPE_COLORMIX = 42, 594 595 /* Blend modes */ 596 SEQ_TYPE_SCREEN = 43, 597 SEQ_TYPE_LIGHTEN = 44, 598 SEQ_TYPE_DODGE = 45, 599 SEQ_TYPE_DARKEN = 46, 600 SEQ_TYPE_COLOR_BURN = 47, 601 SEQ_TYPE_LINEAR_BURN = 48, 602 SEQ_TYPE_OVERLAY = 49, 603 SEQ_TYPE_HARD_LIGHT = 50, 604 SEQ_TYPE_SOFT_LIGHT = 51, 605 SEQ_TYPE_PIN_LIGHT = 52, 606 SEQ_TYPE_LIN_LIGHT = 53, 607 SEQ_TYPE_VIVID_LIGHT = 54, 608 SEQ_TYPE_HUE = 55, 609 SEQ_TYPE_SATURATION = 56, 610 SEQ_TYPE_VALUE = 57, 611 SEQ_TYPE_BLEND_COLOR = 58, 612 SEQ_TYPE_DIFFERENCE = 59, 613 SEQ_TYPE_EXCLUSION = 60, 614 615 SEQ_TYPE_MAX = 60, 616 }; 617 618 #define SEQ_MOVIECLIP_RENDER_UNDISTORTED (1 << 0) 619 #define SEQ_MOVIECLIP_RENDER_STABILIZED (1 << 1) 620 621 #define SEQ_BLEND_REPLACE 0 622 /* all other BLEND_MODEs are simple SEQ_TYPE_EFFECT ids and therefore identical 623 * to the table above. (Only those effects that handle _exactly_ two inputs, 624 * otherwise, you can't really blend, right :) !) 625 */ 626 627 #define SEQ_HAS_PATH(_seq) \ 628 (ELEM((_seq)->type, SEQ_TYPE_MOVIE, SEQ_TYPE_IMAGE, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD)) 629 630 /* modifiers */ 631 632 /* SequenceModifierData->type */ 633 enum { 634 seqModifierType_ColorBalance = 1, 635 seqModifierType_Curves = 2, 636 seqModifierType_HueCorrect = 3, 637 seqModifierType_BrightContrast = 4, 638 seqModifierType_Mask = 5, 639 seqModifierType_WhiteBalance = 6, 640 seqModifierType_Tonemap = 7, 641 /* Keep last. */ 642 NUM_SEQUENCE_MODIFIER_TYPES, 643 }; 644 645 /* SequenceModifierData->flag */ 646 enum { 647 SEQUENCE_MODIFIER_MUTE = (1 << 0), 648 SEQUENCE_MODIFIER_EXPANDED = (1 << 1), 649 }; 650 651 enum { 652 SEQUENCE_MASK_INPUT_STRIP = 0, 653 SEQUENCE_MASK_INPUT_ID = 1, 654 }; 655 656 enum { 657 /* Mask animation will be remapped relative to the strip start frame. */ 658 SEQUENCE_MASK_TIME_RELATIVE = 0, 659 /* Global (scene) frame number will be used to access the mask. */ 660 SEQUENCE_MASK_TIME_ABSOLUTE = 1, 661 }; 662 663 /* Sequence->cache_flag 664 * SEQ_CACHE_STORE_RAW 665 * SEQ_CACHE_STORE_PREPROCESSED 666 * SEQ_CACHE_STORE_COMPOSITE 667 * FINAL_OUT is ignored 668 * 669 * Editing->cache_flag 670 * all entries 671 */ 672 enum { 673 SEQ_CACHE_STORE_RAW = (1 << 0), 674 SEQ_CACHE_STORE_PREPROCESSED = (1 << 1), 675 SEQ_CACHE_STORE_COMPOSITE = (1 << 2), 676 SEQ_CACHE_STORE_FINAL_OUT = (1 << 3), 677 678 /* For lookup purposes */ 679 SEQ_CACHE_ALL_TYPES = SEQ_CACHE_STORE_RAW | SEQ_CACHE_STORE_PREPROCESSED | 680 SEQ_CACHE_STORE_COMPOSITE | SEQ_CACHE_STORE_FINAL_OUT, 681 682 SEQ_CACHE_OVERRIDE = (1 << 4), 683 684 /* enable cache visualization overlay in timeline UI */ 685 SEQ_CACHE_VIEW_ENABLE = (1 << 5), 686 SEQ_CACHE_VIEW_RAW = (1 << 6), 687 SEQ_CACHE_VIEW_PREPROCESSED = (1 << 7), 688 SEQ_CACHE_VIEW_COMPOSITE = (1 << 8), 689 SEQ_CACHE_VIEW_FINAL_OUT = (1 << 9), 690 691 SEQ_CACHE_PREFETCH_ENABLE = (1 << 10), 692 SEQ_CACHE_DISK_CACHE_ENABLE = (1 << 11), 693 }; 694 695 #ifdef __cplusplus 696 } 697 #endif 698