From: Andre Noll Date: Sat, 6 Jul 2013 00:24:48 +0000 (+0200) Subject: Merge branch 't/opus' X-Git-Tag: v0.4.13~22 X-Git-Url: http://git.tuebingen.mpg.de/?a=commitdiff_plain;ds=sidebyside;h=9d75ded33ce6664156acb07e311f51d55970bbea;hp=-c;p=paraslash.git Merge branch 't/opus' Was cooking for two weeks with no problems. 273756 The opus decoder. 7007ae The opus audio format handler. 8bcf75 ogg/opus: Infrastructure. 53133e speex: Don't export spx_ctl(). --- 9d75ded33ce6664156acb07e311f51d55970bbea diff --combined NEWS index 866904e3,56f84753..19c98a4b --- a/NEWS +++ b/NEWS @@@ -1,20 -1,11 +1,23 @@@ ------------------------------------------ 0.?.? (to be announced) "spectral gravity" ------------------------------------------ ++A new audio format, UTF-8 support, and tons of other improvements ++and fixes all over the place. ++ - New audio format: ogg/opus. - UTF8 support for para_gui and the mp3 audio format handler. - Scheduler improvements and fixes. - The obsolete gettimeofday() function has been replaced by clock_gettime() on systems which support it. + - Speed and usability improvements for para_gui. + - para_client now restores the fd flags of stdin and stdout + on shutdown. + - Improved manual pages. + - Consistent version strings for all executables. + - Reduced depencies on generated files result in fewer + recompilations on changes. + - Performance improvements for the compress filter. + - Improved downloads web page. ----------------------------------------- 0.4.12 (2012-12-20) "volatile relativity" diff --combined configure.ac index 3a0a36f6,b3f3afaf..b3332c67 --- a/configure.ac +++ b/configure.ac @@@ -102,7 -102,7 +102,7 @@@ all_errlist_objs="mp3_afh afh_common ne exec send_common ggo udp_recv color fec fecdec_filter prebuffer_filter bitstream imdct check_wav wma_afh wma_common wmadec_filter buffer_tree crypt_common - gui gui_theme sideband afh_recv play" + gui gui_theme sideband afh_recv play version" executables="recv filter audioc write client afh audiod play" @@@ -111,83 -111,49 +111,83 @@@ recv_cmdline_objs="add_cmdline(recv htt recv_errlist_objs=" http_recv recv_common recv time string net dccp_recv fd sched stdout ggo udp_recv buffer_tree afh_recv afh_common - wma_afh wma_common mp3_afh + wma_afh wma_common mp3_afh version " recv_ldflags="" filter_cmdline_objs="add_cmdline(filter compress_filter amp_filter prebuffer_filter)" filter_errlist_objs="filter_common wav_filter compress_filter filter string - stdin stdout sched fd amp_filter ggo fecdec_filter fec + stdin stdout sched fd amp_filter ggo fecdec_filter fec version prebuffer_filter time bitstream imdct wma_common wmadec_filter buffer_tree" filter_ldflags="-lm" filters=" compress wav amp fecdec wmadec prebuffer" audioc_cmdline_objs="add_cmdline(audioc)" -audioc_errlist_objs="audioc string net fd" +audioc_errlist_objs=" + audioc + string + net + fd + version + ggo +" audioc_ldflags="" audiod_cmdline_objs="add_cmdline(audiod compress_filter http_recv dccp_recv file_write client amp_filter udp_recv prebuffer_filter)" audiod_errlist_objs="audiod signal string daemon stat net crypt_common sideband time grab_client filter_common wav_filter compress_filter amp_filter http_recv dccp_recv recv_common fd sched write_common file_write audiod_command fecdec_filter - client_common ggo udp_recv color fec prebuffer_filter + client_common ggo udp_recv color fec prebuffer_filter version bitstream imdct wma_common wmadec_filter buffer_tree" audiod_ldflags="-lm" audiod_audio_formats="wma" afh_cmdline_objs="add_cmdline(afh)" -afh_errlist_objs="afh string fd mp3_afh afh_common time wma_afh wma_common" +afh_errlist_objs="afh string fd mp3_afh afh_common time wma_afh wma_common + version ggo" afh_ldflags="" write_cmdline_objs="add_cmdline(write file_write)" write_errlist_objs="write write_common file_write time fd string sched stdin - buffer_tree ggo check_wav" + buffer_tree ggo check_wav version" write_ldflags="" writers=" file" default_writer="FILE_WRITE" client_cmdline_objs="add_cmdline(client)" -client_errlist_objs="client net string fd sched stdin stdout time sideband - client_common buffer_tree crypt_common" +client_errlist_objs=" + client + net + string + fd + sched + stdin + stdout + time + sideband + client_common + buffer_tree + crypt_common + version + ggo +" client_ldflags="" gui_cmdline_objs="add_cmdline(gui)" -gui_errlist_objs="exec signal string stat ringbuffer fd gui gui_theme" +gui_errlist_objs=" + exec + signal + string + stat + ringbuffer + fd + gui + gui_theme + time + version + ggo +" gui_objs="$gui_cmdline_objs $gui_errlist_objs" play_errlist_objs="play fd sched ggo buffer_tree time string net afh_recv afh_common @@@ -197,7 -163,6 +197,7 @@@ wav_filter compress_filter amp_filter prebuffer_filter fecdec_filter wmadec_filter write_common file_write + version " play_cmdline_objs="add_cmdline(http_recv dccp_recv udp_recv afh_recv compress_filter amp_filter prebuffer_filter file_write play)" play_ldflags="-lm" @@@ -325,43 -290,11 +325,43 @@@ els extras="$extras server" executables="$executables server" server_cmdline_objs="add_cmdline(server)" - server_errlist_objs="server afh_common mp3_afh vss command net - string signal time daemon http_send close_on_fork mm - crypt_common ipc dccp_send fd user_list chunk_queue - afs aft mood score attribute blob playlist sched acl - send_common udp_send color fec wma_afh wma_common sideband" + server_errlist_objs=" + server + afh_common + mp3_afh + vss command + net + string + signal + time + daemon + http_send + close_on_fork + mm + crypt_common + ipc dccp_send + fd + user_list + chunk_queue + afs + aft + mood + score + attribute + blob + playlist + sched + acl + send_common + udp_send + color + fec + wma_afh + wma_common + sideband + version + ggo + " all_errlist_objs="$all_errlist_objs server vss command http_send close_on_fork mm ipc dccp_send user_list chunk_queue afs aft mood score attribute blob playlist @@@ -529,15 -462,7 +529,15 @@@ AC_MSG_RESULT($have_ucred if test ${have_ucred} = yes; then AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred) fi - +########################################################################### gengetopt +echo 'option "z" z "" flag off' | $gengetopt --file-name conftest-ggo && +AC_CHECK_DECL( + [gengetopt_args_info_description], + [ggo_descriptions_declared=yes], + [ggo_descriptions_declared=no], + [#include "conftest-ggo.h"] +) +AC_SUBST(ggo_descriptions_declared) ########################################################################### curses have_curses="yes" OLD_CPPFLAGS="$CPPFLAGS" @@@ -629,7 -554,7 +629,7 @@@ if test ${have_core_audio} = yes; the default_writer="OSX_WRITE" AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X) fi - ########################################################### ogg/vorbis/speex + ####################################################### ogg/vorbis/speex/opus have_ogg="yes" OLD_CPPFLAGS="$CPPFLAGS" OLD_LD_FLAGS="$LDFLAGS" @@@ -646,6 -571,10 +646,10 @@@ AC_ARG_WITH(speex_headers, [AS_HELP_STR [look for speex headers also in dir])]) AC_ARG_WITH(speex_libs, [AS_HELP_STRING(--with-speex-libs=dir, [look for speex libs also in dir])]) + AC_ARG_WITH(opus_headers, [AS_HELP_STRING(--with-opus-headers=dir, + [look for opus headers also in dir])]) + AC_ARG_WITH(opus_libs, [AS_HELP_STRING(--with-opus-libs=dir, + [look for opus libs also in dir])]) if test -n "$with_ogg_headers"; then ogg_cppflags="-I$with_ogg_headers" @@@ -660,6 -589,7 +664,7 @@@ AC_CHECK_LIB([ogg], [ogg_stream_init], have_vorbis="yes" have_speex="yes" + have_opus="yes" if test "$have_ogg" = "yes"; then # vorbis if test -n "$with_vorbis_headers"; then @@@ -684,14 -614,29 +689,29 @@@ fi AC_CHECK_LIB([speex], [speex_decoder_init], [], [ have_speex="no" ]) AC_CHECK_HEADERS([speex/speex.h], [], [ have_speex="no" ]) + + # opus + if test -n "$with_opus_headers"; then + opus_cppflags="-I$with_opus_headers" + CPPFLAGS="$CPPFLAGS $opus_cppflags" + fi + if test -n "$with_opus_libs"; then + speex_libs="-L$with_opus_libs" + LDFLAGS="$LDFLAGS $opus_libs" + fi + AC_CHECK_LIB([opus], [opus_multistream_decode], [], [ have_opus="no" ]) + AC_CHECK_HEADERS([opus/opus.h], [], [ have_opus="no" ]) else - AC_MSG_WARN([vorbis/speex depend on libogg, which was not detected]) + AC_MSG_WARN([vorbis/speex/opus depend on libogg, which was not detected]) have_vorbis="no" have_speex="no" + have_opus="no" fi msg="support in para_server/para_filter/para_afh" - if test "$have_vorbis" = "yes" || test "$have_speex" = "yes"; then + if test "$have_vorbis" = "yes" || \ + test "$have_speex" = "yes" || \ + test "$have_opus" = "yes"; then AC_SUBST(ogg_cppflags) ogg_libs="$ogg_libs -logg" if test "$OSTYPE" = "Darwin"; then @@@ -757,6 -702,30 +777,30 @@@ if test "$have_speex" = "yes"; the else AC_MSG_WARN([no ogg/speex $msg]) fi + if test "$have_opus" = "yes"; then + all_errlist_objs="$all_errlist_objs opusdec_filter opus_afh opus_common" + AC_DEFINE(HAVE_OPUS, 1, define to 1 to turn on ogg/opus support) + filters="$filters opusdec" + opus_libs="-lopus" + server_ldflags="$server_ldflags $opus_libs" + filter_ldflags="$filter_ldflags $opus_libs" + audiod_ldflags="$audiod_ldflags $opus_libs" + afh_ldflags="$afh_ldflags $opus_libs" + play_ldflags="$play_ldflags $opus_libs" + recv_ldflags="$recv_ldflags $opus_libs" + + server_errlist_objs="$server_errlist_objs opus_afh opus_common" + filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common" + audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common" + afh_errlist_objs="$afh_errlist_objs opus_afh opus_common" + play_errlist_objs="$play_errlist_objs opusdec_filter opus_afh opus_common" + recv_errlist_objs="$recv_errlist_objs opus_afh opus_common" + + audiod_audio_formats="$audiod_audio_formats opus" + server_audio_formats="$server_audio_formats opus" + else + AC_MSG_WARN([no ogg/opus $msg]) + fi CPPFLAGS="$OLD_CPPFLAGS" LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" @@@ -1032,7 -1001,7 +1076,7 @@@ if test -n "$mixers"; the extras="$extras fade" executables="$executables fade" all_errlist_objs="$all_errlist_objs fade" - fade_errlist_objs="$fade_errlist_objs fade exec string fd" + fade_errlist_objs="$fade_errlist_objs fade exec string fd version ggo" fade_cmdline_objs="add_cmdline(fade)" fade_objs="$fade_cmdline_objs $fade_errlist_objs" AC_SUBST(fade_objs, add_dot_o($fade_objs)) diff --combined error.h index 41a7fe12,873ce280..6734040b --- a/error.h +++ b/error.h @@@ -34,13 -34,13 +34,14 @@@ DEFINE_ERRLIST_OBJECT_ENUM #define STDIN_ERRORS #define WRITE_ERRORS #define CHECK_WAV_ERRORS +#define VERSION_ERRORS extern const char **para_errlist[]; #define OSS_MIX_ERRORS \ PARA_ERROR(OSS_MIXER_CHANNEL, "invalid mixer channel"), \ + #define ALSA_MIX_ERRORS \ PARA_ERROR(ALSA_MIX_OPEN, "could not open mixer"), \ PARA_ERROR(ALSA_MIX_BAD_ELEM, "invalid/unsupported control element"), \ @@@ -53,6 -53,19 +54,19 @@@ PARA_ERROR(LIBSAMPLERATE, "secret rabbit code error"), \ + #define OPUS_COMMON_ERRORS \ + PARA_ERROR(OPUS_HEADER, "invalid opus header"), \ + + + #define OPUS_AFH_ERRORS \ + PARA_ERROR(OPUS_COMMENT, "invalid or corrupted opus comment"), \ + + + #define OPUSDEC_FILTER_ERRORS \ + PARA_ERROR(CREATE_OPUS_DECODER, "could not create opus decoder"), \ + PARA_ERROR(OPUS_SET_GAIN, "opus: could not set gain"), \ + PARA_ERROR(OPUS_DECODE, "opus decode error"), \ + #define SIDEBAND_ERRORS \ PARA_ERROR(BAD_BAND, "invalid or unexpected band designator"), \ PARA_ERROR(SB_PACKET_SIZE, "invalid sideband packet size or protocol error"), \