Commit Graph

60 Commits

Author SHA1 Message Date
Harald Welte 495c694781 print meaningful error messages if something goes wrong in main/pq 2017-05-28 14:30:05 +02:00
Harald Welte 8b01f0ca05 Add AMR codec support
After merging this change, there is support for the AMR codec (by means
of libopencore-amr, which is already used for EFR).

In terms of gapk formats, we introdude
* the "amr-opencore" format, which serves both as the canonical format,
  and as the input format to opencore-amrnb itself.
* the "rtp-amr" format, which is the payload of RFC4867 octet-aligned mode

You can use the following command for a real-time RTP playback for AMR
frames:
  ./gapk -I 0.0.0.0/30000 -f rtp-amr -A default -g rawpcm-s16le
2017-05-28 14:29:59 +02:00
Harald Welte 494d92c3c7 more API documentation 2017-05-28 10:44:10 +02:00
Harald Welte 5912848d2e prepare gapk for dealing with variable-length frames
The existing architecture was modelled around fixed-length codec frame
sizes, which of course fails with multi-rate codecs such as AMR.
2017-05-28 10:44:06 +02:00
Harald Welte 62688b60c2 introduce #defines for canonical length + use them 2017-05-28 10:20:26 +02:00
Harald Welte 2ae47af0be Add ALSA input/output support to GAPK
The ALSA source/sink uses the pcm-s16le format.
2017-05-28 01:56:33 +02:00
Harald Welte 07d691314c RTP: give meaningful error messages if something fails
In fact, it should probably be better to silently ignore all those
errors as opposed to aborting the entire processing queue?  But that's
for another patch...
2017-05-28 01:56:33 +02:00
Harald Welte f3d2ad6a19 add some more comments throughout the code 2017-05-27 16:42:14 +02:00
Sylvain Munaut d192d8c017 benchmark: Fix cpuid clobbering
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2016-01-01 13:17:37 +01:00
Sylvain Munaut db94df5f9c main: Fixup the help screen
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 13:06:40 +01:00
Sylvain Munaut c0f0342596 libgsmhr: Make it safe to decode/encode different streams at once
Basically the reference code has a bunch of global state.
With some minimal patchihg (previous commit) we can ensure that all
that state is within .bss

So what we do it to save/restore the bss section between calls of the
reference code so we can process several in // and we don't have to
completely fix all reference to global state in the reference codec.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 11:55:03 +01:00
Sylvain Munaut 5e2e0442e0 libgsmhr: Add some code cleanup / speedup patches for reference codec
Mostly this will help witht the upcoming bss switcheroo patch

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 11:55:03 +01:00
Sylvain Munaut 59a6c2dc62 libgsmhr: Use patch instead of 'sed'
Patches are without function-name and without context to minimize what
we have to include.

The current patchset does exactly what the previous 'sed' did, but this
will make it easier to add more.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 11:55:03 +01:00
Sylvain Munaut 04a705f419 libgsmhr: Fix parallel build dependency
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 11:55:03 +01:00
Sylvain Munaut cddc91428f libgsmhr: fix Makefile.am dependency on source download
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 11:44:37 +01:00
Sylvain Munaut 8966846f3e libgsmhr/fetch_sources: Only use the filename and not any path
There shouldn't be any but somebody might be nasty :p

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 11:44:37 +01:00
Sylvain Munaut ac967d20fd build: Don't build static libraries
They won't be supported anyway when using the 'bss switcheroo' hack
for libgsmhr

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 11:44:37 +01:00
Sylvain Munaut ea1c6c61f4 build: Use autotools 'subdir-objects' option
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 11:44:37 +01:00
Sylvain Munaut d392a89cc8 benchmark: Make sure to print to stderr
stdout can be used for data output ...

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2015-12-30 10:45:22 +01:00
Harald Welte d72b0f654f ensure all gapk header files are included in 'dist' 2015-11-05 21:41:09 +01:00
Harald Welte bb782d98f3 Fix dist / distcheck targets by including fetch_sources.py in EXTRA_DIST 2015-11-05 21:37:57 +01:00
Harald Welte 0790f03eb9 add git-version-gen to auto-generate version from git repo tags 2015-11-05 21:25:32 +01:00
Harald Welte 7a04624563 Add cycle benchmarking support
This enables benchmarking of the codec.  It will print
the amount of CPU cycles needed for encoding/decoding a single
20ms frame on average.
2014-05-08 19:18:01 +02:00
Sylvain Munaut 8b5e0c7b81 libgsmhr: Update source location
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2013-12-13 15:41:07 +01:00
Sylvain Munaut 2c8b3fd281 build: Use AM_CPPFLAGS in Makefile.am
Since automake 1.13 INCLUDES is depricates and causes a warning

Inspired from similar patches by Alexander Huemer for other osmocom
projects

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2013-06-17 08:53:21 +02:00
Harald Welte e7e12cc9aa gapk: make sure the output file is closed/flushed on ctrl+c
This is useful particularly in case you are reading from RTP and writing
to a file, and don't want truncated codec frames in your file.
2013-02-11 11:47:56 +01:00
Harald Welte ce94d971e1 gapk: Add support for RTP input/output streams
Instead of having only file-based I/O, this enables gapk to receive and
send RTP streams, e.g. from live GSM network equipment like
sysmoBTS/nanoBTS.

Support is currently simplistic.  On transmit, there is hard-coded codec
type of full-rate GSM.  On receive-side, we should auto-detect the
format based on frame size and/or payload type, but we don't do that yet
at all.
2013-02-11 11:38:23 +01:00
Harald Welte f7f0c91ca8 gapk main: move fh_in and fh_out to sub-structures in a union
this is done in preparation to provide something else but file
input/output.
2013-02-11 09:26:36 +01:00
Sylvain Munaut db837250de codec: Fix opencore nb include path
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2012-12-08 19:14:11 +01:00
Sylvain Munaut 19428ca7bf autotools: Add AC_LANG_SOURCE required for autotools >= 2.68
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-09-30 12:15:12 +02:00
Sylvain Munaut e2c5719d74 format/fmt_ti: Add support for EFR variant
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-02-25 18:12:25 +01:00
Sylvain Munaut b1525d67fe format/fmt_ti: Add support for HR variant
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-02-25 16:58:36 +01:00
Sylvain Munaut cfaec3a2f6 format: Add support for the TI calypso/locosto dumped buffer format
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-02-25 15:31:54 +01:00
Sylvain Munaut 3c9c2fb6ee Fix error in configure.ac preventing compiling without opencore-amrnb
Obvious typo ...

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-13 00:19:09 +01:00
Sylvain Munaut f624d18067 codec: Fix EFR codec encoder function. Return value is #bytes
32 is the normal value

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-12 20:53:53 +01:00
Sylvain Munaut 477f5cdefc Update gitignore 2010-11-12 20:47:30 +01:00
Sylvain Munaut a0c4d21bf6 [4/4] HR support: Add hooks in gapk to use libgsmhr for encoding/decoding
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-12 20:47:30 +01:00
Sylvain Munaut f7d6f3c828 [3/4] HR support: Add actual wrapper code to call reference code
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-12 20:47:30 +01:00
Sylvain Munaut aa55d30d20 [2/4] HR support: Add logic to fetch reference source code and build it
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-12 20:47:30 +01:00
Sylvain Munaut 0d2a82c312 [1/4] HR support: Add autotools skeleton for libgsmhr
Not functional yet, just the autotools magic to make a library

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-12 20:36:14 +01:00
Sylvain Munaut 4604976a5f Add a real main method to does the job
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 22:58:57 +01:00
Sylvain Munaut 456758c808 format: Add support for Raw PCM Signed 16 bits Little Endian
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 22:58:20 +01:00
Sylvain Munaut 9843418a33 procqueue: Add Codec tasks
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 20:45:24 +01:00
Sylvain Munaut 792d04135e procqueue: Add format conversion tasks
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 20:45:24 +01:00
Sylvain Munaut d9fb0e37c8 procqueue: Add file related tasks
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 20:45:24 +01:00
Sylvain Munaut 3c0a4fba8a procqueue: Add some mechanism to queue 'processing items' on the frames
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 20:45:24 +01:00
Sylvain Munaut 8552b9dc0c codec/efr: Add support for encoding/decoding using OpenCore AMR NB
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 20:26:41 +01:00
Sylvain Munaut dc5b38b991 codec/fr: Add support for encoding/decoding using libgsm
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 20:26:41 +01:00
Sylvain Munaut 24b761218f format: Add function to get format by name
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 20:26:41 +01:00
Sylvain Munaut ef7ada56ce codec: Add fields in struct codec_desc to support encoding/decoding
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-11-11 20:26:41 +01:00