aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael 'Mickey' Lauer <mickey@vanille-media.de>2011-05-07 12:24:47 +0200
committerMichael 'Mickey' Lauer <mickey@vanille-media.de>2011-05-07 12:24:47 +0200
commit5a029766a2d5216452120315a95d5f384fe7a8bd (patch)
treee7bf17096838fdc452963871b9f6eda6d092a1b9
parentd7a3dcf3bf932df4a58d5d99255a8a5ab1abbc2a (diff)
downloadcornucopia-5a029766a2d5216452120315a95d5f384fe7a8bd.tar.gz
cornucopia-5a029766a2d5216452120315a95d5f384fe7a8bd.tar.bz2
cornucopia-5a029766a2d5216452120315a95d5f384fe7a8bd.zip
fsoaudiod: add vapi for libcmtspeechdata; add configuration logic for optional plugin
-rw-r--r--fsoaudiod/configure.ac39
-rw-r--r--fsoaudiod/src/plugins/Makefile.am8
-rw-r--r--fsoaudiod/src/plugins/gsmvoice_alsa_cmtspeechdata/Makefile.am5
-rw-r--r--fsoaudiod/vapi/libcmtspeechdata.vapi175
4 files changed, 219 insertions, 8 deletions
diff --git a/fsoaudiod/configure.ac b/fsoaudiod/configure.ac
index 527018d2..b502ab58 100644
--- a/fsoaudiod/configure.ac
+++ b/fsoaudiod/configure.ac
@@ -19,12 +19,16 @@ AC_SUBST(CFLAGS)
AC_SUBST(CPPFLAGS)
AC_SUBST(LDFLAGS)
+##############################################################################
+# dependency versions
GLIB_REQUIRED=2.26.0
GEE_REQUIRED=0.5.0
FSO_GLIB_REQUIRED=2011.03.15.1
FSO_REQUIRED=0.2.3
ALSA_REQUIRED=0.20
+CMTSPEECHDATA_REQUIRED=2.1.1
+##############################################################################
# glib and friends
PKG_CHECK_MODULES(GLIB,
glib-2.0 >= $GLIB_REQUIRED
@@ -33,18 +37,21 @@ PKG_CHECK_MODULES(GLIB,
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
+##############################################################################
# gee
PKG_CHECK_MODULES(GEE,
gee-1.0 >= $GEE_REQUIRED)
AC_SUBST(GEE_CFLAGS)
AC_SUBST(GEE_LIBS)
+##############################################################################
# alsa
PKG_CHECK_MODULES(ALSA,
alsa >= $ALSA_REQUIRED)
AC_SUBST(ALSA_CFLAGS)
AC_SUBST(ALSA_LIBS)
+##############################################################################
# dbus conf directory
DBUS_DIR="`$PKG_CONFIG --variable=sysconfdir dbus-1`"
if (test -z "{DBUS_DIR}"); then
@@ -54,6 +61,7 @@ else
fi
AC_SUBST(DBUS_DIR)
+##############################################################################
# dbus service directory
DBUS_SERVICE_DIR="`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`"
if (test -z "{DBUS_SERVICE_DIR}"); then
@@ -61,6 +69,7 @@ if (test -z "{DBUS_SERVICE_DIR}"); then
fi
AC_SUBST(DBUS_SERVICE_DIR)
+##############################################################################
# fso
PKG_CHECK_MODULES(FSO,
fsoframework-2.0 >= $FSO_REQUIRED
@@ -68,6 +77,23 @@ PKG_CHECK_MODULES(FSO,
AC_SUBST(FSO_CFLAGS)
AC_SUBST(FSO_LIBS)
+##############################################################################
+# optional feature: GSM voice call audio using libcmtspeechdata
+AC_ARG_ENABLE(cmtspeechdata,
+ [ --enable-cmtspeechdata Enable building the gsm voicecall plugin using libcmtspeechdata (default=disabled)],
+ [cmtspeechdata=$enableval],
+ [cmtspeechdata="no"])
+
+if test x$cmtspeechdata = "xyes"; then
+ PKG_CHECK_MODULES(CMTSPEECHDATA,
+ libcmtspeechdata >= $CMTSPEECHDATA_REQUIRED)
+AC_SUBST(CMTSPEECHDATA_CFLAGS)
+AC_SUBST(CMTSPEECHDATA_LIBS)
+
+fi
+AM_CONDITIONAL( [WANT_CMTSPEECHDATA], [test x"$cmtspeechdata" = x"yes"])
+
+##############################################################################
# check for debugging
AC_ARG_ENABLE(debug,
[ --enable-debug Enable debug build (default=disabled)],
@@ -75,10 +101,12 @@ AC_ARG_ENABLE(debug,
[debug="no"])
AM_CONDITIONAL( [WANT_DEBUG], [test x"$debug" = x"yes"])
+##############################################################################
# git version
GITV=`cat ../.git/refs/heads/master || echo "unknown"`
AC_DEFINE_UNQUOTED([PACKAGE_GITV], ["${GITV}"], [git version])
+##############################################################################
# datadir
if test "x$prefix" != "xNONE"; then
pkgdatadir='${prefix}/share/fsoaudiod'
@@ -109,10 +137,9 @@ AC_CONFIG_FILES([
src/plugins/streamcontrol_alsa/Makefile
])
-AC_OUTPUT
-#
+##############################################################################
# Info
-#
+AC_OUTPUT
echo
echo
echo
@@ -122,9 +149,11 @@ echo "------------------------------------------------------------------------"
echo
echo "Configuration Options:"
echo
-echo " debug build.............: $debug"
+echo " gsmvoice_alsa_cmtspeechdata:.........: $cmtspeechdata"
+echo
+echo " debug build..........................: $debug"
echo
-echo " prefix..................: $prefix"
+echo " prefix...............................: $prefix"
echo
echo "------------------------------------------------------------------------"
echo
diff --git a/fsoaudiod/src/plugins/Makefile.am b/fsoaudiod/src/plugins/Makefile.am
index 41e1647d..17868715 100644
--- a/fsoaudiod/src/plugins/Makefile.am
+++ b/fsoaudiod/src/plugins/Makefile.am
@@ -4,8 +4,6 @@ NULL =
AUTOMAKE_OPTIONS = subdir-objects
SUBDIRS = \
- gsmvoice_alsa_cmtspeechdata \
- \
manager \
\
router_palmpre \
@@ -14,3 +12,9 @@ SUBDIRS = \
streamcontrol_alsa \
\
$(NULL)
+
+if WANT_CMTSPEECHDATA
+SUBDIRS += gsmvoice_alsa_cmtspeechdata
+endif
+
+
diff --git a/fsoaudiod/src/plugins/gsmvoice_alsa_cmtspeechdata/Makefile.am b/fsoaudiod/src/plugins/gsmvoice_alsa_cmtspeechdata/Makefile.am
index ae7d80cf..220b7cbf 100644
--- a/fsoaudiod/src/plugins/gsmvoice_alsa_cmtspeechdata/Makefile.am
+++ b/fsoaudiod/src/plugins/gsmvoice_alsa_cmtspeechdata/Makefile.am
@@ -3,6 +3,7 @@ NULL =
AM_CFLAGS = \
-I$(top_srcdir)/src/lib \
+ $(CMTSPEECHDATA_CFLAGS) \
$(FSO_GLIB_CFLAGS) \
$(FSO_CFLAGS) \
$(GLIB_CFLAGS) \
@@ -12,6 +13,7 @@ AM_CFLAGS = \
noinst_PROGRAMS = $(TEST_PROGS)
progs_ldadd = \
+ $(CMTSPEECHDATA_LIBS) \
$(FSO_GLIB_LIBS) \
$(FSO_LIBS) \
$(GLIB_LIBS) \
@@ -26,7 +28,8 @@ VALAC_ARGS = \
--pkg gee-1.0 \
--pkg fso-glib-1.0 \
--pkg fsoframework-2.0 \
- --pkg fsoaudio-2.0
+ --pkg fsoaudio-2.0 \
+ --pkg libcmtspeechdata
if WANT_DEBUG
VALAC_ARGS += -g -D DEBUG
diff --git a/fsoaudiod/vapi/libcmtspeechdata.vapi b/fsoaudiod/vapi/libcmtspeechdata.vapi
new file mode 100644
index 00000000..e6c2560a
--- /dev/null
+++ b/fsoaudiod/vapi/libcmtspeechdata.vapi
@@ -0,0 +1,175 @@
+/*
+ * (C) 2011 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+ */
+
+[CCode (cprefix = "CMTSPEECH_", lower_case_cprefix = "cmtspeech_", cheader_filename = "cmtspeech.h")]
+namespace CmtSpeech
+{
+
+ /* Enums */
+
+ [CCode (cname = "gint", cprefix = "CMTSPEECH_STATE_", has_type_id = false, cheader_filename = "cmtspeech.h")]
+ public enum State
+ {
+ INVALID,
+ DISCONNECTED,
+ CONNECTED,
+ ACTIVE_DL,
+ ACTIVE_DLUL,
+ TEST_RAMP_PING_ACTIVE
+ }
+
+ [CCode (cname = "gint", cprefix = "CMTSPEECH_TR_", has_type_id = false, cheader_filename = "cmtspeech.h")]
+ public enum Transition
+ {
+ INVALID,
+ 0_NO_CHANGE,
+ 1_CONNECTED,
+ 2_DISCONNECTED,
+ 3_DL_START,
+ 4_DLUL_STOP,
+ 5_PARAM_UPDATE,
+ 6_TIMING_UPDATE,
+ 7_TIMING_UPDATE,
+ 10_RESET,
+ 11_UL_STOP,
+ 12_UL_START
+ }
+
+ [CCode (cname = "gint", cprefix = "CMTSPEECH_BUFFER_TYPE_", has_type_id = false, cheader_filename = "cmtspeech.h")]
+ public enum BufferType
+ {
+ PCM_S16_LE
+ }
+
+ [CCode (cname = "gint", cprefix = "CMTSPEECH_EVENT_", has_type_id = false, cheader_filename = "cmtspeech.h")]
+ public enum EventType
+ {
+ CONTROL,
+ DL_DATA,
+ XRUN
+ }
+
+ [CCode (cname = "gint", cprefix = "CMTSPEECH_DATA_TYPE_", has_type_id = false, cheader_filename = "cmtspeech.h")]
+ public enum FrameFlags
+ {
+ ZERO,
+ INVALID,
+ VALID
+ }
+
+ [CCode (cname = "gint", cprefix = "CMTSPEECH_SPC_FLAGS_", has_type_id = false, cheader_filename = "cmtspeech.h")]
+ public enum SpcFlags
+ {
+ SPEECH,
+ BFI,
+ ATTENUATE,
+ DEC_RESET,
+ MUTE,
+ PREV,
+ DTX_USED
+ }
+
+ [CCode (cname = "gint", cprefix = "CMTSPEECH_SAMPLE_RATE_", has_type_id = false, cheader_filename = "cmtspeech_msgs.h")]
+ public enum SampleRate
+ {
+ NONE,
+ 8KHZ,
+ 16KHZ
+ }
+
+ [CCode (cname = "gint", cprefix = "CMTSPEECH_TRACE_", has_type_id = false, cheader_filename = "cmtspeech_msgs.h")]
+ public enum TraceType
+ {
+ ERROR,
+ INFO,
+ STATE_CHANGE,
+ IO,
+ DEBUG,
+ INTERNAL
+ }
+
+ /* Structs */
+
+ [Compact]
+ [CCode (cname = "struct cmtspeech_buffer_s", free_function = "", cheader_filename = "cmtspeech.h")]
+ public class FrameBuffer
+ {
+ public BufferType type; /**< buffer type (CMTSPEECH_BUFFER_TYPE_*) */
+ public int count; /**< octets of valid data (including header) */
+ public int pcount; /**< octets of valid payload data */
+ public int size; /**< octets of allocated space */
+ public FrameFlags frame_flags; /**< frame flags; enum CMTSPEECH_DATATYPE_* */
+ public SpcFlags spc_flags; /**< speech codec flags for the frame;
+ for UL: always set to zero,
+ for DL: bitmask of CMTSPEECH_SPC_FLAGS_* */
+ public uint8* data; /**< pointer to a buffer of 'size' octets */
+ public uint8* payload; /**< pointer to frame payload */
+ }
+
+ [CCode (cname = "struct cmtspeech_event_s", destroy_function = "", cheader_filename = "cmtspeech.h")]
+ public struct Event
+ {
+ public State state;
+ public State prev_state;
+ public int msg_type;
+
+ /* union ... */
+ }
+
+ /* Static */
+
+ public static string version_str();
+ public static int protocol_version();
+ public static void init();
+ [CCode (has_target = false)]
+ public delegate void trace_handler_t( int priority, string message, va_list args );
+ public static void trace_toggle( int priority, bool enabled );
+ public static int set_trace_handler( trace_handler_t func );
+
+ /* Classes */
+
+ [Compact]
+ [CCode (cprefix = "cmtspeech_", cname = "cmtspeech_t", free_function = "cmtspeech_close", cheader_filename = "cmtspeech.h")]
+ public class Connection
+ {
+ [CCode (cname = "cmtspeech_open")]
+ public Connection();
+
+ //public int close();
+ public int descriptor();
+ public int check_pending( out EventType flags_mask );
+ public int read_event( Event event );
+ public Transition event_to_state_transition( Event event );
+
+ public int set_wb_preference( bool enabled );
+ public State protocol_state();
+
+ public bool is_ssi_connection_enabled();
+ public bool is_active();
+
+ public int state_change_call_status( bool state );
+ public int state_change_call_connect( bool state );
+ public int state_change_error();
+
+ public int ul_buffer_acquire( out FrameBuffer buffer );
+ public int ul_buffer_release( FrameBuffer buffer );
+
+ public int dl_buffer_acquire( out FrameBuffer buffer );
+ public int dl_buffer_release( FrameBuffer buffer );
+
+ public SampleRate buffer_codec_sample_rate();
+ public SampleRate buffer_sample_rate();
+
+ public FrameBuffer dl_buffer_find_with_data( uint8* data);
+
+ public string backend_name();
+ public int backend_message( int type, int args, ... );
+ public int send_timing_request();
+ public int send_ssi_config_request( bool active );
+
+ public int test_data_ramp_req( uint8 rampstart, uint8 ramplen );
+ }
+
+
+} /* namespace CmtSpeech */