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

This commit is contained in:
Sergey Sharybin 2011-12-30 18:15:44 +00:00
parent 3c6e818b22
commit 792452a7e5
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 sequence);
short backwards, short sequence);
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

@ -787,11 +787,11 @@ typedef struct MovieTrackingContext {
MovieTrackingSettings settings;
TracksMap *tracks_map;
short backwards, disable_failed, sequence;
short backwards, sequence;
int sync_frame;
} MovieTrackingContext;
MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *user, short backwards, short disable_failed, short sequence)
MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *user, short backwards, short sequence)
{
MovieTrackingContext *context= MEM_callocN(sizeof(MovieTrackingContext), "trackingContext");
MovieTracking *tracking= &clip->tracking;
@ -803,7 +803,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;
context->sequence= sequence;
@ -1379,7 +1378,7 @@ int BKE_tracking_next(MovieTrackingContext *context)
}
coords_correct= !onbound && !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

@ -1297,7 +1297,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, 1);
tmj->context= BKE_tracking_context_new(clip, &sc->user, backwards, 1);
clip->tracking_context= tmj->context;
@ -1408,7 +1408,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, sequence);
context= BKE_tracking_context_new(clip, &sc->user, backwards, sequence);
while(framenr != efra) {
if(!BKE_tracking_next(context))