diff options
Diffstat (limited to 'tools/dtmf')
-rw-r--r-- | tools/dtmf/dtmftest.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/tools/dtmf/dtmftest.c b/tools/dtmf/dtmftest.c index bc7adc1..d43ee3f 100644 --- a/tools/dtmf/dtmftest.c +++ b/tools/dtmf/dtmftest.c @@ -100,8 +100,9 @@ static gpointer reader_thread_func(gpointer data) break; } - int code = 0; - switch(sign) { + static int code = 0; + if(sign != 's') { + switch(sign) { case '0': code = 0; break; case '1': code = 1; break; case '2': code = 2; break; @@ -119,16 +120,16 @@ static gpointer reader_thread_func(gpointer data) case 'c': code = 14; break; case 'd': code = 15; break; 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); + 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); + gst_element_send_event(element, ev); } - - 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); - gst_element_send_event(element, ev); - - // sleep is useless - 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); } g_main_loop_quit(loop); |