]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
Merge branch 't/opus'
authorAndre Noll <maan@systemlinux.org>
Sat, 6 Jul 2013 00:24:48 +0000 (02:24 +0200)
committerAndre Noll <maan@systemlinux.org>
Sat, 6 Jul 2013 00:27:58 +0000 (02:27 +0200)
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().

1  2 
NEWS
configure.ac
error.h

diff --combined NEWS
index 866904e32955d84a72ff8ba5d9e811a99de975fb,56f84753314b71f7f41b193eb4e7a6df6ce8d82f..19c98a4be597bf6d156ce29006f11944b7b7903c
--- 1/NEWS
--- 2/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 3a0a36f62f002a9bf19d3d9e66d495fc27b942b0,b3f3afaf66c34dafe95e0f9fe7f82da3b80a3de5..b3332c670f6eb610afa05f84adca763490e1e4c7
@@@ -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
        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
        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 41a7fe12180473b65976d456ae228ad8561665b9,873ce28036442b31f2d72f9c8c811cbad928b1e3..6734040bec1a99f7dda774a9d2655cabef4cac18
+++ 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"), \
        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"), \