Disable markers when doing frame-by-frame tracking and tracker library returns failure

This commit is contained in:
Sergey Sharybin 2011-12-07 11:02:34 +00:00
parent f354d44cba
commit dbc9227a32
3 changed files with 6 additions and 7 deletions

View File

@ -98,7 +98,7 @@ struct MovieTrackingReconstruction *BKE_tracking_object_reconstruction(struct Mo
/* 2D tracking */
struct MovieTrackingContext *BKE_tracking_context_new(struct MovieClip *clip, struct MovieClipUser *user,
short backwards, short disable_failed);
short backwards);
void BKE_tracking_context_free(struct MovieTrackingContext *context);
void BKE_tracking_sync(struct MovieTrackingContext *context);
void BKE_tracking_sync_user(struct MovieClipUser *user, struct MovieTrackingContext *context);

View File

@ -784,11 +784,11 @@ typedef struct MovieTrackingContext {
MovieTrackingSettings settings;
TracksMap *tracks_map;
short backwards, disable_failed;
short backwards;
int sync_frame;
} MovieTrackingContext;
MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *user, short backwards, short disable_failed)
MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *user, short backwards)
{
MovieTrackingContext *context= MEM_callocN(sizeof(MovieTrackingContext), "trackingContext");
MovieTracking *tracking= &clip->tracking;
@ -800,7 +800,6 @@ MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *u
context->settings= *settings;
context->backwards= backwards;
context->disable_failed= disable_failed;
context->sync_frame= user->framenr;
context->first_time= 1;
@ -1356,7 +1355,7 @@ int BKE_tracking_next(MovieTrackingContext *context)
}
coords_correct= !isnan(x2) && !isnan(y2) && finite(x2) && finite(y2);
if(coords_correct && (tracked || !context->disable_failed)) {
if(coords_correct && !onbound && tracked) {
if(context->first_time) {
#pragma omp critical
{

View File

@ -1317,7 +1317,7 @@ static int track_markers_initjob(bContext *C, TrackMarkersJob *tmj, int backward
else if(settings->speed==TRACKING_SPEED_DOUBLE) tmj->delay/= 2;
}
tmj->context= BKE_tracking_context_new(clip, &sc->user, backwards, 1);
tmj->context= BKE_tracking_context_new(clip, &sc->user, backwards);
clip->tracking_context= tmj->context;
@ -1428,7 +1428,7 @@ static int track_markers_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
/* do not disable tracks due to threshold when tracking frame-by-frame */
context= BKE_tracking_context_new(clip, &sc->user, backwards, sequence);
context= BKE_tracking_context_new(clip, &sc->user, backwards);
while(framenr != efra) {
if(!BKE_tracking_next(context))