From e98a42e462e350d013ea544ef611ea63e390a3c0 Mon Sep 17 00:00:00 2001 From: Douglas Bagnall Date: Fri, 11 Jun 2010 17:05:04 +1200 Subject: [PATCH] try to add a "wait for play" submode. it didn't work --- edges.c | 23 ++++++++++++++++++++++- edges.h | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/edges.c b/edges.c index 0a79d4e..3ddbb36 100644 --- a/edges.c +++ b/edges.c @@ -886,6 +886,7 @@ find_corners(GstSparrow *sparrow, sparrow_find_lines_t *fl) #else corners_to_lut(sparrow, fl); #endif + jump_state(sparrow, fl, EDGES_NEXT_STATE); break; default: GST_DEBUG("how did sparrow->countdown get to be %d?", sparrow->countdown); @@ -894,6 +895,20 @@ find_corners(GstSparrow *sparrow, sparrow_find_lines_t *fl) return sparrow->countdown; } +static gboolean +wait_for_play(GstSparrow *sparrow, sparrow_find_lines_t *fl){ + switch(sparrow->countdown){ + case 0: + /*just starting! set to wait time*/ + sparrow->countdown = 100; + case 1: + return TRUE; + default: + break; + } + sparrow->countdown--; + return FALSE; +} INVISIBLE sparrow_state mode_find_edges(GstSparrow *sparrow, guint8 *in, guint8 *out){ @@ -906,9 +921,15 @@ mode_find_edges(GstSparrow *sparrow, guint8 *in, guint8 *out){ draw_lines(sparrow, fl, in, out); break; case EDGES_FIND_CORNERS: + memset(out, 0, sparrow->out.size); if (find_corners(sparrow, fl)) break; - return SPARROW_NEXT_STATE; + case EDGES_WAIT_FOR_PLAY: + memset(out, 0, sparrow->out.size); + if (wait_for_play(sparrow, fl)){ + return SPARROW_NEXT_STATE; + } + break; case EDGES_NEXT_STATE: break; /*shush gcc */ } diff --git a/edges.h b/edges.h index 25b24bc..564c21e 100644 --- a/edges.h +++ b/edges.h @@ -23,6 +23,7 @@ typedef enum edges_state { EDGES_FIND_NOISE, EDGES_FIND_LINES, EDGES_FIND_CORNERS, + EDGES_WAIT_FOR_PLAY, EDGES_NEXT_STATE, } edges_state_t; -- 2.11.4.GIT