Some options used for "expert" x264 setup were removed from FFmpeg 0.11
[blender.git] / source / blender / blenkernel / nla_private.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (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, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2009 Blender Foundation, Joshua Leung
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): Joshua Leung (full recode)
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file blender/blenkernel/nla_private.h
29  *  \ingroup bke
30  */
31
32
33 #ifndef __NLA_PRIVATE_H__
34 #define __NLA_PRIVATE_H__
35
36 /* --------------- NLA Evaluation DataTypes ----------------------- */
37
38 /* used for list of strips to accumulate at current time */
39 typedef struct NlaEvalStrip {
40         struct NlaEvalStrip *next, *prev;
41         
42         NlaTrack *track;            /* track that this strip belongs to */
43         NlaStrip *strip;            /* strip that's being used */
44         
45         short track_index;          /* the index of the track within the list */
46         short strip_mode;           /* which end of the strip are we looking at */
47         
48         float strip_time;           /* time at which which strip is being evaluated */
49 } NlaEvalStrip;
50
51 /* NlaEvalStrip->strip_mode */
52 enum {
53         /* standard evaluation */
54         NES_TIME_BEFORE = -1,
55         NES_TIME_WITHIN,
56         NES_TIME_AFTER,
57         
58         /* transition-strip evaluations */
59         NES_TIME_TRANSITION_START,
60         NES_TIME_TRANSITION_END,
61 } eNlaEvalStrip_StripMode;
62
63
64 /* temp channel for accumulating data from NLA (avoids needing to clear all values first) */
65 // TODO: maybe this will be used as the 'cache' stuff needed for editable values too?
66 typedef struct NlaEvalChannel {
67         struct NlaEvalChannel *next, *prev;
68         
69         PointerRNA ptr;         /* pointer to struct containing property to use */
70         PropertyRNA *prop;      /* RNA-property type to use (should be in the struct given) */
71         int index;              /* array index (where applicable) */
72         
73         float value;            /* value of this channel */
74 } NlaEvalChannel;
75
76 /* --------------- NLA Functions (not to be used as a proper API) ----------------------- */
77
78 /* convert from strip time <-> global time */
79 float nlastrip_get_frame(NlaStrip *strip, float cframe, short mode);
80
81 /* --------------- NLA Evaluation (very-private stuff) ----------------------- */
82 /* these functions are only defined here to avoid problems with the order in which they get defined... */
83
84 NlaEvalStrip *nlastrips_ctime_get_strip(ListBase *list, ListBase *strips, short index, float ctime);
85 void nlastrip_evaluate(PointerRNA *ptr, ListBase *channels, ListBase *modifiers, NlaEvalStrip *nes);
86 void nladata_flush_channels(ListBase *channels);
87
88 #endif // __NLA_PRIVATE_H__