2 This file is part of GNUnet.
3 Copyright (C) 2016 GNUnet e.V.
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
21 * @file conversation/gnunet_gst_test.c
26 #include "gnunet_gst_def.h"
27 #include "gnunet_gst.h"
30 main (int argc, char *argv[])
32 struct GNUNET_gstData *gst;
34 GstElement *gnunetsrc, *gnunetsink, *source, *sink, *encoder, *decoder;
38 // audio_message = GNUNET_malloc (UINT16_MAX);
39 //audio_message->header.type = htons (GNUNET_MESSAGE_TYPE_CONVERSATION_AUDIO);
42 //GstPipeline *pipeline;
44 gst = (GNUNET_gstData*)malloc(sizeof(struct GNUNET_gstData));
46 //gst->audio_message.header.type = htons (GNUNET_MESSAGE_TYPE_CONVERSATION_AUDIO);
49 gg_load_configuration(gst);
51 gst->audiobackend = JACK;
52 gst->dropsilence = TRUE;
55 /* Initialize GStreamer */
56 gst_init (&argc, &argv);
58 gst->pipeline = GST_PIPELINE(gst_pipeline_new ("gnunet-media-helper"));
62 printf("this is the speaker \n");
65 int type = MICROPHONE;
66 printf("this is the microphone \n");
72 gnunetsrc = GST_ELEMENT(get_app(gst, SOURCE));
74 sink = GST_ELEMENT(get_audiobin(gst, SINK));
75 decoder = GST_ELEMENT(get_coder(gst, DECODER));
76 gst_bin_add_many( GST_BIN(gst->pipeline), gnunetsrc, decoder, sink, NULL);
77 gst_element_link_many( gnunetsrc, decoder, sink , NULL);
80 if ( type == MICROPHONE ) {
82 source = GST_ELEMENT(get_audiobin(gst, SOURCE));
84 encoder = GST_ELEMENT(get_coder(gst, ENCODER));
86 gnunetsink = GST_ELEMENT(get_app(gst, SINK));
88 gst_bin_add_many( GST_BIN(gst->pipeline), source, encoder, gnunetsink, NULL);
89 gst_element_link_many( source, encoder, gnunetsink , NULL);
94 gst_bin_add_many( GST_BIN(gst->pipeline), appsource, appsink, source, encoder, decoder, sink, NULL);
95 gst_element_link_many( source, encoder, decoder, sink , NULL);
97 pl_graph(gst->pipeline);
99 gst_element_set_state (GST_ELEMENT(gst->pipeline), GST_STATE_PLAYING);
101 //pl_graph(gst->pipeline);
103 /* Wait until error or EOS */
104 //bus = gst_element_get_bus (GST_ELEMENT(gst->pipeline));
105 //bus_watch_id = gst_bus_add_watch (bus, gnunet_gst_bus_call, pipeline);
107 gg_setup_gst_bus(gst);
108 // g_print ("Running...\n");
111 // start pushing buffers
112 if ( type == MICROPHONE )
117 loop = g_main_loop_new (NULL, FALSE);
119 g_main_loop_run (loop);
125 flow = on_appsink_new_sample (gst->appsink, gst);
129 if ( type == SPEAKER )
133 // printf("read.. \n");
137 g_print ("Returned, stopping playback\n");
139 // gst_object_unref (bus);
140 gst_element_set_state (GST_ELEMENT(gst->pipeline), GST_STATE_NULL);
141 gst_object_unref (gst->pipeline);