aboutsummaryrefslogtreecommitdiff
path: root/src/conversation/gnunet-helper-audio-record.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/conversation/gnunet-helper-audio-record.c')
-rw-r--r--src/conversation/gnunet-helper-audio-record.c48
1 files changed, 35 insertions, 13 deletions
diff --git a/src/conversation/gnunet-helper-audio-record.c b/src/conversation/gnunet-helper-audio-record.c
index 9442e9b45..dd8c8f447 100644
--- a/src/conversation/gnunet-helper-audio-record.c
+++ b/src/conversation/gnunet-helper-audio-record.c
@@ -264,30 +264,36 @@ static int dump_pure_ogg;
264static void 264static void
265quit (int ret) 265quit (int ret)
266{ 266{
267 mainloop_api->quit (mainloop_api, ret); 267 mainloop_api->quit (mainloop_api,
268 ret);
268 exit (ret); 269 exit (ret);
269} 270}
270 271
271 272
272static void 273static void
273write_data (const char *ptr, size_t msg_size) 274write_data (const char *ptr,
275 size_t msg_size)
274{ 276{
275 ssize_t ret; 277 ssize_t ret;
276 size_t off; 278 size_t off;
277 off = 0; 279 off = 0;
278 while (off < msg_size) 280 while (off < msg_size)
279 { 281 {
280 ret = write (1, &ptr[off], msg_size - off); 282 ret = write (STDOUT_FILENO,
283 &ptr[off],
284 msg_size - off);
281 if (0 >= ret) 285 if (0 >= ret)
282 { 286 {
283 if (-1 == ret) 287 if (-1 == ret)
284 GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "write"); 288 GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
289 "write");
285 quit (2); 290 quit (2);
286 } 291 }
287 off += ret; 292 off += ret;
288 } 293 }
289} 294}
290 295
296
291static void 297static void
292write_page (ogg_page *og) 298write_page (ogg_page *og)
293{ 299{
@@ -305,12 +311,15 @@ write_page (ogg_page *og)
305 toff); 311 toff);
306#ifdef DEBUG_RECORD_PURE_OGG 312#ifdef DEBUG_RECORD_PURE_OGG
307 if (dump_pure_ogg) 313 if (dump_pure_ogg)
308 write_data ((const char *) &audio_message[1], og->header_len + og->body_len); 314 write_data ((const char *) &audio_message[1],
315 og->header_len + og->body_len);
309 else 316 else
310#endif 317#endif
311 write_data ((const char *) audio_message, msg_size); 318 write_data ((const char *) audio_message,
319 msg_size);
312} 320}
313 321
322
314/** 323/**
315 * Creates OPUS packets from PCM data 324 * Creates OPUS packets from PCM data
316 */ 325 */
@@ -340,7 +349,7 @@ packetizer ()
340 opus_strerror (len)); 349 opus_strerror (len));
341 quit (5); 350 quit (5);
342 } 351 }
343 if (len > UINT16_MAX - sizeof (struct AudioMessage)) 352 if (((uint32_t)len) > UINT16_MAX - sizeof (struct AudioMessage))
344 { 353 {
345 GNUNET_break (0); 354 GNUNET_break (0);
346 continue; 355 continue;
@@ -360,7 +369,9 @@ packetizer ()
360 369
361 while (ogg_stream_flush_fill (&os, &og, PAGE_WATERLINE)) 370 while (ogg_stream_flush_fill (&os, &og, PAGE_WATERLINE))
362 { 371 {
363 if (og.header_len + og.body_len > UINT16_MAX - sizeof (struct AudioMessage)) 372 if ( ((unsigned long long) og.header_len) +
373 ((unsigned long long) og.body_len) >
374 UINT16_MAX - sizeof (struct AudioMessage))
364 { 375 {
365 GNUNET_assert (0); 376 GNUNET_assert (0);
366 continue; 377 continue;
@@ -399,6 +410,7 @@ stream_read_callback (pa_stream * s,
399{ 410{
400 const void *data; 411 const void *data;
401 412
413 (void) userdata;
402 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 414 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
403 "Got %u/%d bytes of PCM data\n", 415 "Got %u/%d bytes of PCM data\n",
404 (unsigned int) length, 416 (unsigned int) length,
@@ -449,6 +461,10 @@ exit_signal_callback (pa_mainloop_api * m,
449 int sig, 461 int sig,
450 void *userdata) 462 void *userdata)
451{ 463{
464 (void) m;
465 (void) e;
466 (void) sig;
467 (void) userdata;
452 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 468 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
453 _("Got signal, exiting.\n")); 469 _("Got signal, exiting.\n"));
454 quit (1); 470 quit (1);
@@ -459,10 +475,11 @@ exit_signal_callback (pa_mainloop_api * m,
459 * Pulseaudio stream state callback 475 * Pulseaudio stream state callback
460 */ 476 */
461static void 477static void
462stream_state_callback (pa_stream * s, void *userdata) 478stream_state_callback (pa_stream * s,
479 void *userdata)
463{ 480{
481 (void) userdata;
464 GNUNET_assert (NULL != s); 482 GNUNET_assert (NULL != s);
465
466 switch (pa_stream_get_state (s)) 483 switch (pa_stream_get_state (s))
467 { 484 {
468 case PA_STREAM_CREATING: 485 case PA_STREAM_CREATING:
@@ -522,6 +539,7 @@ static void
522context_state_callback (pa_context * c, 539context_state_callback (pa_context * c,
523 void *userdata) 540 void *userdata)
524{ 541{
542 (void) userdata;
525 GNUNET_assert (c); 543 GNUNET_assert (c);
526 544
527 switch (pa_context_get_state (c)) 545 switch (pa_context_get_state (c))
@@ -654,6 +672,7 @@ opus_init ()
654 OPUS_SET_SIGNAL (CONV_OPUS_SIGNAL)); 672 OPUS_SET_SIGNAL (CONV_OPUS_SIGNAL));
655} 673}
656 674
675
657static void 676static void
658ogg_init () 677ogg_init ()
659{ 678{
@@ -662,8 +681,8 @@ ogg_init ()
662 struct OpusCommentsPacket *commentspacket; 681 struct OpusCommentsPacket *commentspacket;
663 size_t commentspacket_len; 682 size_t commentspacket_len;
664 683
665 serialno = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, 0x7FFFFFFF); 684 serialno = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG,
666 685 0x7FFFFFFF);
667 /*Initialize Ogg stream struct*/ 686 /*Initialize Ogg stream struct*/
668 if (-1 == ogg_stream_init (&os, serialno)) 687 if (-1 == ogg_stream_init (&os, serialno))
669 { 688 {
@@ -750,8 +769,11 @@ ogg_init ()
750 * @return 0 ok, 1 on error 769 * @return 0 ok, 1 on error
751 */ 770 */
752int 771int
753main (int argc, char *argv[]) 772main (int argc,
773 char *argv[])
754{ 774{
775 (void) argc;
776 (void) argv;
755 GNUNET_assert (GNUNET_OK == 777 GNUNET_assert (GNUNET_OK ==
756 GNUNET_log_setup ("gnunet-helper-audio-record", 778 GNUNET_log_setup ("gnunet-helper-audio-record",
757 "WARNING", 779 "WARNING",