/*
This file is part of GNUnet.
Copyright (C) 2016 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License,
or (at your option) any later version.
GNUnet is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
/**
* @file conversation/gnunet_gst_def.h
* @brief FIXME
* @author Hark
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_protocols.h"
//#include "gnunet/conversation.h" doesn't get installed
#include "conversation.h"
#include "gnunet_constants.h"
#include "gnunet_core_service.h"
#include "gnunet_common.h"
/*
#include
#include
#include
*/
/* huh
#include
#include
#include
#include
#include
#include
*/
#include
#include
#include
#include
#include
// sockets
#ifndef MINGW
#if HAVE_NETINET_IN_H
#include
#endif
#include
#include
#include
#endif
#include
#include
//glib stuff
//#include
#include
//#include
// static struct AudioMessage *audio_message;
typedef struct GNUNET_gstData GNUNET_gstData;
struct GNUNET_gstData {
//general
GstPipeline *pipeline;
// things
struct AudioMessage *audio_message;
struct GNUNET_MessageStreamTokenizer *stdin_mst;
GstElement *appsrc;
GstElement *appsink;
//settings
int audiobackend;
int dropsilence;
int usertp;
int pure_ogg;
char *jack_pp_in;
char *jack_pp_out;
};
#define DEBUG_READ_PURE_OGG 1
#define DEBUG_RECORD_PURE_OGG 1
/**
* How much data to read in one go
*/
#define MAXLINE 4096
/**
* Max number of microseconds to buffer in audiosink.
* Default is 1000
*/
#define BUFFER_TIME 1000
/**
* Min number of microseconds to buffer in audiosink.
* Default is 1000
*/
#define LATENCY_TIME 1000
/**
* Number of channels.
* Must be one of the following (from libopusenc documentation):
* 1, 2
*/
#define OPUS_CHANNELS 1
/**
* Maximal size of a single opus packet.
*/
#define MAX_PAYLOAD_SIZE (1024 / OPUS_CHANNELS)
/**
* Size of a single frame fed to the encoder, in ms.
* Must be one of the following (from libopus documentation):
* 2.5, 5, 10, 20, 40 or 60
*/
#define OPUS_FRAME_SIZE 40
/**
* Expected packet loss to prepare for, in percents.
*/
#define PACKET_LOSS_PERCENTAGE 1
/**
* Set to 1 to enable forward error correction.
* Set to 0 to disable.
*/
#define INBAND_FEC_MODE 1
/**
* Max number of microseconds to buffer in audiosource.
* Default is 200000
*/
#define BUFFER_TIME 1000 /* 1ms */
/**
* Min number of microseconds to buffer in audiosource.
* Default is 10000
*/
#define LATENCY_TIME 1000 /* 1ms */
/**
* Maximum delay in multiplexing streams, in ns.
* Setting this to 0 forces page flushing, which
* decreases delay, but increases overhead.
*/
#define OGG_MAX_DELAY 0
/**
* Maximum delay for sending out a page, in ns.
* Setting this to 0 forces page flushing, which
* decreases delay, but increases overhead.
*/
#define OGG_MAX_PAGE_DELAY 0
#define SAMPLING_RATE 48000
enum {
AUTO,
JACK,
ALSA,
FAKE,
TEST
};
enum {
SOURCE,
SINK
};
enum {
ENCODER,
DECODER
};
enum {
FAIL,
OK
};
enum {
SPEAKER,
MICROPHONE
};