diff options
Diffstat (limited to 'src/contrib/service/conversation/gnunet_gst_test.c')
-rw-r--r-- | src/contrib/service/conversation/gnunet_gst_test.c | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/contrib/service/conversation/gnunet_gst_test.c b/src/contrib/service/conversation/gnunet_gst_test.c new file mode 100644 index 000000000..dd2ef5a38 --- /dev/null +++ b/src/contrib/service/conversation/gnunet_gst_test.c | |||
@@ -0,0 +1,135 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet. | ||
3 | Copyright (C) 2016 GNUnet e.V. | ||
4 | |||
5 | GNUnet is free software: you can redistribute it and/or modify it | ||
6 | under the terms of the GNU Affero General Public License as published | ||
7 | by the Free Software Foundation, either version 3 of the License, | ||
8 | or (at your option) any later version. | ||
9 | |||
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 | Affero General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU Affero General Public License | ||
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | |||
18 | SPDX-License-Identifier: AGPL3.0-or-later | ||
19 | */ | ||
20 | /** | ||
21 | * @file conversation/gnunet_gst_test.c | ||
22 | * @brief FIXME | ||
23 | * @author Hark | ||
24 | */ | ||
25 | |||
26 | #include "platform.h" | ||
27 | #include "gnunet_gst_def.h" | ||
28 | #include "gnunet_gst.h" | ||
29 | |||
30 | int | ||
31 | main (int argc, char *argv[]) | ||
32 | { | ||
33 | struct GNUNET_gstData *gst; | ||
34 | // GstBus *bus; | ||
35 | GstElement *gnunetsrc, *gnunetsink, *source, *sink, *encoder, *decoder; | ||
36 | |||
37 | |||
38 | // audio_message = GNUNET_malloc (UINT16_MAX); | ||
39 | // audio_message->header.type = htons (GNUNET_MESSAGE_TYPE_CONVERSATION_AUDIO); | ||
40 | |||
41 | |||
42 | // GstPipeline *pipeline; | ||
43 | |||
44 | gst = (GNUNET_gstData *) malloc (sizeof(struct GNUNET_gstData)); | ||
45 | |||
46 | // gst->audio_message.header.type = htons (GNUNET_MESSAGE_TYPE_CONVERSATION_AUDIO); | ||
47 | |||
48 | |||
49 | gg_load_configuration (gst); | ||
50 | /* | ||
51 | gst->audiobackend = JACK; | ||
52 | gst->dropsilence = TRUE; | ||
53 | gst->usertp = FALSE; | ||
54 | *//* Initialize GStreamer */gst_init (&argc, &argv); | ||
55 | |||
56 | gst->pipeline = GST_PIPELINE (gst_pipeline_new ("gnunet-media-helper")); | ||
57 | |||
58 | #ifdef IS_SPEAKER | ||
59 | int type = SPEAKER; | ||
60 | printf ("this is the speaker \n"); | ||
61 | #endif | ||
62 | #ifdef IS_MIC | ||
63 | int type = MICROPHONE; | ||
64 | printf ("this is the microphone \n"); | ||
65 | #endif | ||
66 | if (type == SPEAKER) | ||
67 | { | ||
68 | gnunetsrc = GST_ELEMENT (get_app (gst, SOURCE)); | ||
69 | |||
70 | sink = GST_ELEMENT (get_audiobin (gst, SINK)); | ||
71 | decoder = GST_ELEMENT (get_coder (gst, DECODER)); | ||
72 | gst_bin_add_many (GST_BIN (gst->pipeline), gnunetsrc, decoder, sink, NULL); | ||
73 | gst_element_link_many (gnunetsrc, decoder, sink, NULL); | ||
74 | } | ||
75 | if (type == MICROPHONE) | ||
76 | { | ||
77 | source = GST_ELEMENT (get_audiobin (gst, SOURCE)); | ||
78 | |||
79 | encoder = GST_ELEMENT (get_coder (gst, ENCODER)); | ||
80 | |||
81 | gnunetsink = GST_ELEMENT (get_app (gst, SINK)); | ||
82 | |||
83 | gst_bin_add_many (GST_BIN (gst->pipeline), source, encoder, gnunetsink, | ||
84 | NULL); | ||
85 | gst_element_link_many (source, encoder, gnunetsink, NULL); | ||
86 | } | ||
87 | /* | ||
88 | gst_bin_add_many( GST_BIN(gst->pipeline), appsource, appsink, source, encoder, decoder, sink, NULL); | ||
89 | gst_element_link_many( source, encoder, decoder, sink , NULL); | ||
90 | */ | ||
91 | pl_graph (gst->pipeline); | ||
92 | /* Start playing */ | ||
93 | gst_element_set_state (GST_ELEMENT (gst->pipeline), GST_STATE_PLAYING); | ||
94 | |||
95 | // pl_graph(gst->pipeline); | ||
96 | |||
97 | /* Wait until error or EOS */ | ||
98 | // bus = gst_element_get_bus (GST_ELEMENT(gst->pipeline)); | ||
99 | // bus_watch_id = gst_bus_add_watch (bus, gnunet_gst_bus_call, pipeline); | ||
100 | |||
101 | gg_setup_gst_bus (gst); | ||
102 | // g_print ("Running...\n"); | ||
103 | |||
104 | |||
105 | // start pushing buffers | ||
106 | if (type == MICROPHONE) | ||
107 | { | ||
108 | GMainLoop *loop; | ||
109 | loop = g_main_loop_new (NULL, FALSE); | ||
110 | |||
111 | g_main_loop_run (loop); | ||
112 | |||
113 | /* | ||
114 | while ( 1 ) | ||
115 | { | ||
116 | GstFlowReturn flow; | ||
117 | flow = on_appsink_new_sample (gst->appsink, gst); | ||
118 | } | ||
119 | */} | ||
120 | if (type == SPEAKER) | ||
121 | { | ||
122 | while (1) | ||
123 | { | ||
124 | // printf("read.. \n"); | ||
125 | gnunet_read (gst); | ||
126 | } | ||
127 | } | ||
128 | g_print ("Returned, stopping playback\n"); | ||
129 | |||
130 | // gst_object_unref (bus); | ||
131 | gst_element_set_state (GST_ELEMENT (gst->pipeline), GST_STATE_NULL); | ||
132 | gst_object_unref (gst->pipeline); | ||
133 | |||
134 | return 0; | ||
135 | } | ||