diff options
-rw-r--r-- | tools/dtmf/dtmftest.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/tools/dtmf/dtmftest.c b/tools/dtmf/dtmftest.c index d43ee3f..11ff679 100644 --- a/tools/dtmf/dtmftest.c +++ b/tools/dtmf/dtmftest.c @@ -90,6 +90,7 @@ static gpointer reader_thread_func(gpointer data) tio.c_lflag &= ~ICANON; tcsetattr(fileno(stdin), TCSANOW, &tio); + int code = -1; for(;;) { char sign; @@ -100,8 +101,15 @@ static gpointer reader_thread_func(gpointer data) break; } - static int code = 0; + GstStructure* st; + GstEvent* ev; if(sign != 's') { + if(code != -1) { + st = gst_structure_new ("dtmf-event", "type", G_TYPE_INT, 1, "number", G_TYPE_INT, code, "start", G_TYPE_BOOLEAN, FALSE, NULL); + ev = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, st); + gst_element_send_event(element, ev); + } + code = -1; switch(sign) { case '0': code = 0; break; case '1': code = 1; break; @@ -122,13 +130,14 @@ static gpointer reader_thread_func(gpointer data) default: continue; } - GstStructure* st = gst_structure_new ("dtmf-event", "type", G_TYPE_INT, 1, "number", G_TYPE_INT, code, "volume", G_TYPE_INT, 25, "start", G_TYPE_BOOLEAN, TRUE, NULL); - GstEvent* ev = gst_event_new_custom(GST_EVENT_CUSTOM_UPSTREAM, st); + st = gst_structure_new ("dtmf-event", "type", G_TYPE_INT, 1, "number", G_TYPE_INT, code, "volume", G_TYPE_INT, 25, "start", G_TYPE_BOOLEAN, TRUE, NULL); + ev = gst_event_new_custom(GST_EVENT_CUSTOM_UPSTREAM, st); gst_element_send_event(element, ev); - } else { - GstStructure* st = gst_structure_new ("dtmf-event", "type", G_TYPE_INT, 1, "number", G_TYPE_INT, code, "start", G_TYPE_BOOLEAN, FALSE, NULL); - GstEvent* ev = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, st); + } else if(code != -1) { + st = gst_structure_new ("dtmf-event", "type", G_TYPE_INT, 1, "number", G_TYPE_INT, code, "start", G_TYPE_BOOLEAN, FALSE, NULL); + ev = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, st); gst_element_send_event(element, ev); + code = -1; } } |