[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41360] branches/soc-2011-tomato/source/ blender/blenkernel/intern/tracking.c: Camera tracking integration

Sergey Sharybin g.ulairi at gmail.com
Sat Oct 29 12:36:43 CEST 2011


Revision: 41360
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41360
Author:   nazgul
Date:     2011-10-29 10:36:43 +0000 (Sat, 29 Oct 2011)
Log Message:
-----------
Camera tracking integration
===========================

Fixed crash when trying to track from frame where there's no
keyframed markers to use for keyframed tracking
(i.e. when you've tracked forwards, then backwards and the forwards again).

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-10-29 10:19:57 UTC (rev 41359)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-10-29 10:36:43 UTC (rev 41360)
@@ -813,14 +813,27 @@
 	*marker_keyed= marker;
 
 	while(a>=0 && a<track->markersnr) {
-		if((track->markers[a].flag&MARKER_TRACKED)==0) {
-			framenr= track->markers[a].framenr;
-			*marker_keyed= &track->markers[a];
+		int next= (context->backwards) ? a+1 : a-1;
+		int is_keyframed= 0;
+		MovieTrackingMarker *marker= &track->markers[a];
+		MovieTrackingMarker *next_marker= NULL;
+
+		if(next>=0 && next<track->markersnr)
+			next_marker= &track->markers[next];
+
+		/* if next mrker is disabled, stop searching keyframe and use current frame as keyframe */
+		if(next_marker && next_marker->flag&MARKER_DISABLED)
+			is_keyframed= 1;
+
+		is_keyframed|= (marker->flag&MARKER_TRACKED)==0;
+
+		if(is_keyframed) {
+			framenr= marker->framenr;
+			*marker_keyed= marker;
 			break;
 		}
 
-		if(context->backwards) a++;
-		else a--;
+		a= next;
 	}
 
 	return get_frame_ibuf(context, framenr);




More information about the Bf-blender-cvs mailing list