168 lines
5.8 KiB
C
168 lines
5.8 KiB
C
/*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): Blender Foundation,
|
|
* Sergey Sharybin
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
|
|
/** \file DNA_movieclip_types.h
|
|
* \ingroup DNA
|
|
* \since may-2011
|
|
* \author Sergey Sharybin
|
|
*/
|
|
|
|
#ifndef __DNA_MOVIECLIP_TYPES_H__
|
|
#define __DNA_MOVIECLIP_TYPES_H__
|
|
|
|
#include "DNA_ID.h"
|
|
#include "DNA_tracking_types.h"
|
|
#include "DNA_color_types.h" /* for color management */
|
|
|
|
struct anim;
|
|
struct AnimData;
|
|
struct bGPdata;
|
|
struct ImBuf;
|
|
struct MovieClipProxy;
|
|
struct MovieTrackingTrack;
|
|
struct MovieTrackingMarker;
|
|
|
|
typedef struct MovieClipUser {
|
|
int framenr; /* current frame number */
|
|
short render_size, render_flag; /* proxy render size */
|
|
} MovieClipUser;
|
|
|
|
typedef struct MovieClipProxy {
|
|
char dir[768]; /* 768=FILE_MAXDIR custom directory for index and proxy files (defaults to BL_proxy) */
|
|
|
|
short tc; /* time code in use */
|
|
short quality; /* proxy build quality */
|
|
short build_size_flag; /* size flags (see below) of all proxies to build */
|
|
short build_tc_flag; /* time code flags (see below) of all tc indices to build */
|
|
} MovieClipProxy;
|
|
|
|
typedef struct MovieClip {
|
|
ID id;
|
|
struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */
|
|
|
|
char name[1024]; /* file path, 1024 = FILE_MAX */
|
|
|
|
int source; /* sequence or movie */
|
|
int lastframe; /* last accessed frame number */
|
|
int lastsize[2]; /* size of last accessed frame */
|
|
|
|
float aspx, aspy; /* display aspect */
|
|
|
|
struct anim *anim; /* movie source data */
|
|
struct MovieClipCache *cache; /* cache for different stuff, not in file */
|
|
struct bGPdata *gpd; /* grease pencil data */
|
|
|
|
struct MovieTracking tracking; /* data for SfM tracking */
|
|
void *tracking_context; /* context of tracking job
|
|
* used to synchronize data like framenumber
|
|
* in SpaceClip clip user */
|
|
|
|
struct MovieClipProxy proxy; /* proxy to clip data */
|
|
int flag;
|
|
|
|
int len; /* length of movie */
|
|
|
|
int start_frame; /* scene frame number footage starts playing at */
|
|
/* affects all data which is associated with a clip */
|
|
/* such as motion tracking, camera reconstruciton and so */
|
|
|
|
int frame_offset; /* offset which is adding to a file number when reading frame */
|
|
/* from a file. affects only a way how scene frame is mapping */
|
|
/* to a file name and not touches other data associated with */
|
|
/* a clip */
|
|
|
|
/* color management */
|
|
ColorManagedColorspaceSettings colorspace_settings;
|
|
} MovieClip;
|
|
|
|
typedef struct MovieClipScopes {
|
|
short ok; /* 1 means scopes are ok and recalculation is unneeded */
|
|
short use_track_mask; /* whether track's mask should be applied on preview */
|
|
int track_preview_height; /* height of track preview widget */
|
|
int frame_width, frame_height; /* width and height of frame for which scopes are calculated */
|
|
struct MovieTrackingMarker undist_marker; /* undistorted position of marker used for pattern sampling */
|
|
struct ImBuf *track_search; /* search area of a track */
|
|
struct ImBuf *track_preview; /* ImBuf displayed in track preview */
|
|
float track_pos[2]; /* sub-pizel position of marker in track ImBuf */
|
|
short track_disabled; /* active track is disabled, special notifier should be drawn */
|
|
short track_locked; /* active track is locked, no transformation should be allowed */
|
|
int framenr; /* frame number scopes are created for */
|
|
struct MovieTrackingTrack *track; /* track scopes are created for */
|
|
struct MovieTrackingMarker *marker; /* marker scopes are created for */
|
|
float slide_scale[2]; /* scale used for sliding from previewe area */
|
|
} MovieClipScopes;
|
|
|
|
/* MovieClipProxy->build_size_flag */
|
|
enum {
|
|
MCLIP_PROXY_SIZE_25 = (1 << 0),
|
|
MCLIP_PROXY_SIZE_50 = (1 << 1),
|
|
MCLIP_PROXY_SIZE_75 = (1 << 2),
|
|
MCLIP_PROXY_SIZE_100 = (1 << 3),
|
|
MCLIP_PROXY_UNDISTORTED_SIZE_25 = (1 << 4),
|
|
MCLIP_PROXY_UNDISTORTED_SIZE_50 = (1 << 5),
|
|
MCLIP_PROXY_UNDISTORTED_SIZE_75 = (1 << 6),
|
|
MCLIP_PROXY_UNDISTORTED_SIZE_100 = (1 << 7)
|
|
};
|
|
|
|
/* MovieClip->source */
|
|
enum {
|
|
MCLIP_SRC_SEQUENCE = 1,
|
|
MCLIP_SRC_MOVIE = 2
|
|
};
|
|
|
|
/* MovieClip->selection types */
|
|
enum {
|
|
MCLIP_SEL_NONE = 0,
|
|
MCLIP_SEL_TRACK = 1
|
|
};
|
|
|
|
/* MovieClip->flag */
|
|
enum {
|
|
MCLIP_USE_PROXY = (1 << 0),
|
|
MCLIP_USE_PROXY_CUSTOM_DIR = (1 << 1),
|
|
/* MCLIP_CUSTOM_START_FRAME = (1<<2), */ /* UNUSED */
|
|
|
|
MCLIP_TIMECODE_FLAGS = (MCLIP_USE_PROXY | MCLIP_USE_PROXY_CUSTOM_DIR)
|
|
};
|
|
|
|
/* MovieClip->render_size */
|
|
enum {
|
|
MCLIP_PROXY_RENDER_SIZE_FULL = 0,
|
|
MCLIP_PROXY_RENDER_SIZE_25 = 1,
|
|
MCLIP_PROXY_RENDER_SIZE_50 = 2,
|
|
MCLIP_PROXY_RENDER_SIZE_75 = 3,
|
|
MCLIP_PROXY_RENDER_SIZE_100 = 4
|
|
};
|
|
|
|
/* MovieClip->render_flag */
|
|
enum {
|
|
MCLIP_PROXY_RENDER_UNDISTORT = 1
|
|
};
|
|
|
|
#endif
|