1. 05 Aug, 2019 1 commit
    • Arun Raghavan's avatar
      build-sys: Move svolume-*.c to libpulsecore · 6a1addf3
      Arun Raghavan authored
      The various software volume implementations were being built as part of
      libpulsecommon for some reason. These should only ever be used in the
      daemon, so they should be in libpulsecore.
      6a1addf3
  2. 23 Jul, 2019 1 commit
    • Georg Chini's avatar
      Commit fd9e3452 removed -ffast-math from the compile flags. Under some · 3929798a
      Georg Chini authored
      conditions this may lead to massive slowdown of floating point operations
      when underflows or denormals are encountered. In particular, this problem
      was observed with the soxr resampler after applying
      pulseaudio/pulseaudio!120
      
      Therefore this patch adds -ffast-math to the link flags of the pulseaudio
      daemon. Linking with -ffast-math adds a procedure set_fast_math() to the
      startup code of the daemon. On x86, the procedure sets bit 6 and 15 of the
      mxcsr register. When these bits are set, denormals and results of
      underflowing operations are truncated to 0.
      3929798a
  3. 11 Jul, 2019 1 commit
  4. 11 Jun, 2019 1 commit
    • Thomas Hutschenreuther's avatar
      atomic: fix load and store for armv7 and higher · d4ff4adc
      Thomas Hutschenreuther authored
      The original atomic implementation in pulseaudio based on
      libatomic stated that the intent was to use full memory barriers.
      
      According to [1], the load and store implementation based on
      gcc builtins matches sequential consistent (i.e. full memory barrier)
      load and store ordering only for x86.
      
      I observed random crashes in client applications using memfd srbchannel
      transport on an armv8-aarch64 platform (cortex-a57).
      In all those crashes the first read on the pstream descriptor
      (the size field) was wrong and looked like it contained old data.
      I boiled the relevant parts of the srbchannel implementation down to
      a simple test case and could observe random test failures.
      So I figured that the atomic implementation was broken for armv8
      with respect to cross-cpu memory access ordering consistency.
      
      In order to come up with a minimal fix, I used the newer
      __atomic_load_n/__atomic_store_n builtins from gcc.
      
      With
      aarch64-linux-gnu-gcc (Linaro GCC 7.3-2018.05) 7.3.1 20180425
      they compile to
      ldar and stlxr on arm64, which is correct according to [1] and [2].
      
      The other atomic operations based on __sync builtins don't need
      to be touched since they already are of the full memory barrier
      variety.
      
      [1] https://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html
      [2] <https://community.arm.com/developer/ip-products/processors
          /b/processors-ip-blog/posts/armv8-a-architecture-2016-additions>
      d4ff4adc
  5. 06 Jun, 2019 1 commit
    • Arun Raghavan's avatar
      build-sys: Fix up meson install paths · 37dbeae0
      Arun Raghavan authored
      Brings things in line with the autotools build, and adds ALSA mixer
      paths and profile-sets into the meson build system as well.
      
      The module installation path is also now customisable.
      37dbeae0
  6. 25 May, 2019 1 commit
    • Georg Chini's avatar
      core: add simple message interface · 755884d1
      Georg Chini authored
      This patch adds a new feature to the core which allows to send messages
      to objects. An object can register/unregister a message handler with
      pa_message_handler_{register, unregister}() while a message can be sent
      to the handler using the pa_message_handler_send_message() function.
      A message has 4 arguments (apart from passing the core):
      
      object_path: The path identifying the object that will receive the message
      message: message command
      message_parameters: A string containing additional parameters
      response: Pointer to a response string that will be filled by the
                message handler. The caller is responsible to free the string.
      
      The patch is a precondition for the following patches that allow clients
      to send messages to pulseaudio objects.
      
      There is no restriction on object names, except that an object path
      always starts with a "/". The intention is to use a path-like syntax,
      for example /core/sink_1 for a sink or /name/instances/index for modules.
      The exact naming convention still needs to be agreed.
      755884d1
  7. 12 Apr, 2019 1 commit
    • pali's avatar
      bluetooth: Modular API for A2DP codecs · 106aa914
      pali authored
      This patch introduce new modular API for bluetooth A2DP codecs. Its
      benefits are:
      
      * bluez5-util and module-bluez5-device does not contain any codec specific
        code, they are codec independent.
      
      * For adding new A2DP codec it is needed just to adjust one table in
        a2dp-codec-util.c file. All codec specific functions are in separate
        codec file.
      
      * Support for backchannel (microphone voice). Some A2DP codecs (like
        FastStream or aptX Low Latency) are bi-directional and can be used for
        both music playback and audio call.
      
      * Support for more configurations per codec. This allows to implement low
        quality mode of some codec together with high quality.
      
      Current SBC codec implementation was moved from bluez5-util and
      module-bluez5-device to its own file and converted to this new A2DP API.
      106aa914
  8. 16 Jan, 2019 1 commit
  9. 12 Oct, 2018 1 commit
  10. 17 Sep, 2018 1 commit
  11. 22 Aug, 2018 1 commit
  12. 21 Jun, 2018 3 commits
  13. 11 May, 2018 2 commits
  14. 26 Apr, 2018 1 commit
  15. 19 Apr, 2018 1 commit
    • Sylvain Baubeau's avatar
      module-gsettings: new module to store configuration using gsettings · 785b660d
      Sylvain Baubeau authored
      GConf is deprecated, and distributions are removing it. paprefs depends
      on GConf, so in order to avoid paprefs getting removed as well, paprefs
      has to be changed to use something else than GConf. GSettings is the
      easiest alternative to migrate to, although it has the same problems
      that GConf had: no support for system mode or networking.
      
      This patch takes the non-GConf specific code from module-gconf and puts
      it in stdin-util.[ch], which is then reused by module-gsettings.
      module-gsettings is designed to be very similar to module-gconf.
      
      Migration is expected to happen as follows: Distributions update
      PulseAudio and paprefs at the same time, or first PulseAudio and then
      paprefs. paprefs depends on module-gsettings, and module-gsettings
      conflicts with module-gconf. Therefore module-gconf gets automatically
      removed during the paprefs update. After the update an old PulseAudio is
      likely to be running with module-gconf loaded. If the user tries to use
      paprefs during this period, whatever the user does in paprefs won't have
      any effect until PulseAudio is restarted (probably by a reboot or
      relogin). This is not ideal, but will have to do.
      
      When module-gsettings is loaded, it runs gsettings-data-convert
      (implemented in a later patch). That will copy the settings from GConf
      to GSettings. If gsettings-data-convert is not available (it's part of
      GConf, so it may have already been uninstalled), then any previous
      paprefs settings are lost.
      785b660d
  16. 24 Jan, 2018 1 commit
  17. 03 Jan, 2018 1 commit
  18. 12 Dec, 2017 1 commit
  19. 23 Nov, 2017 1 commit
  20. 07 Oct, 2017 1 commit
    • Salvador Fandiño's avatar
      ladspa-sink: fix Windows compilation · 8c22cd54
      Salvador Fandiño authored
      The macro LADSPA_PATH was defined as a list of directories quoted but
      without taking into account that the directory names, specially on
      Windows, can contain backslashes that need escaping.
      
      This patch removes the quoted from the macro and uses the C preprocessor
      to quote it properly using a helper macro.
      8c22cd54
  21. 05 Sep, 2017 3 commits
  22. 27 Feb, 2017 1 commit
    • Mihai Moldovan's avatar
      build-sys: FlatCarbon is dead. Good riddance. · b282f3bb
      Mihai Moldovan authored
      FlatCarbon was the flattened Carbon version used in Mac OS Classic
      (i.e., pre Mac OS X.)
      
      It was shipped as legacy software until 10.8, then dropped completely.
      
      Using CoreServices is good enough, manually including FlatCarbon headers
      only lead to build failures for users who had old versions of Xcode
      lingering around their machines.
      
      v2: don't accidentally drop the OS X semaphore implementation.
      b282f3bb
  23. 19 Jan, 2017 5 commits
    • Martin Blanchard's avatar
      raop: Merge TCP and UDP code paths + refactoring · 8022e565
      Martin Blanchard authored
      TCP and UDP implementation are following two diffrent code path while code
      logic is quite the same. This patch merges both code path into a unique one
      and, thus, leads to a big refactoring. Major changes include:
        - moving sink implementation to a separate file (raop-sink.c)
        - move raop-sink.c protocol specific code to raop-client.c
        - modernise RTSP session handling in TCP mode
        - reduce code duplications between TCP and UDP modes
        - introduce authentication support
        - TCP mode does not constantly send silent audio anymore
      
      About authentication: OPTIONS is now issued when the sink is preliminary
      loaded. Client authentication appends at that time and credential is kept
      for the whole sink lifetime. Later RTSP connection will thus look like this:
      ANNOUNCE > 200 OK > SETUP > 200 OK > RECORD > 200 OK (no more OPTIONS). This
      behaviour is similar to iTunes one.
      
      Also this patch includes file name changes to match Pulseaudio naming
      rules, as most of pulseaudio source code files seem to be using '-'
      instead of '_' as a word separator.
      8022e565
    • Martin Blanchard's avatar
      raop: Move base64 implementation to a util file · bac8a2ba
      Martin Blanchard authored
      Base64 implementation is now in a common file called raop_util.c.
      Old Base64 files are removed but copyright is preserved.
      
      Original patch by Martin Blanchard, patch splitted by
      Hajime Fujita <crisp.fujita@nifty.com>.
      bac8a2ba
    • Martin Blanchard's avatar
      raop: Extract encryption related code into a separate file · 31ded701
      Martin Blanchard authored
      That makes the raop_client.c code smaller/cleaner and will simplify
      addition of more crypto related stuffs like authentication.
      31ded701
    • Matthias Wabersich's avatar
      raop: Packet retransmission support for UDP · 29385da2
      Matthias Wabersich authored
      This patch adds an RTP audio packet retransmission support and a
      circular buffer implementation for it.
      
      This patch was originally written by Matthias Wabersich [1] and
      later debugged and integrated into the latest tree by Hajime Fujita
      
      [1]: https://bugs.freedesktop.org/show_bug.cgi?id=42804#c44
      29385da2
    • Felipe Sateler's avatar
      padsp: allow overriding library install location · 9ce55be6
      Felipe Sateler authored
      The current build script hardcodes the $pkglibdir in the padsp command.
      This works and is a reasonable default. However, distributions that
      know where they install, can override this path and thus make padsp
      work for any architecture that has the library installed by using the
      following configure argument:
      
         --with-pulsedsp-location='/usr/\\$$LIB/pulseaudio'
      
      This works because ld.so considers $LIB a variable that will expand to
      several location paths, depending on the architecture of the binary
      being executed.
      
      In debian, for example, this would work for libpulsedsp.so installed in
      /usr/lib/x86_64-linux-gnu/ for amd64 and /usr/lib/i386-linux-gnu/ for
      i386, with a single padsp command.
      9ce55be6
  24. 20 Dec, 2016 1 commit
  25. 09 Dec, 2016 1 commit
  26. 05 Sep, 2016 1 commit
    • Sylvain Baubeau's avatar
      zeroconf: use local icon for shared devices · 963b3ea6
      Sylvain Baubeau authored
      systemd-hostnamed provides an icon for the machine it is running on.
      If it is running, module-zeroconf-publish uses this icon for the
      'icon-name' attribute in the Avahi properties. module-zeroconf-discover
      passes this icon to module-tunnel using the module parameter
      {sink/source}_properties.
      
      This allows to display a portable, desktop or phone instead of
      the generic sound card icon.
      963b3ea6
  27. 22 Jun, 2016 4 commits
  28. 23 Apr, 2016 1 commit
    • Ahmed S. Darwish's avatar
      build-sys: Set C language standard to gnu11 · dcbe79bd
      Ahmed S. Darwish authored
      
      
      Per glibc feature_test_macros(7), setting compiler flags to
      -std=c11 (or any c* variant like c99) enforces strict ANSI
      mode.
      
      Enforcing strict ANSI makes all declarations under _GNU_SOURCE
      unavailable. This leads to build warnings in the form of:
      
          warning: implicit declaration of function ‘syscall’
      
      Thus replace -std=c11 with -std=gnu11
      Signed-off-by: default avatarAhmed S. Darwish <darwish.07@gmail.com>
      dcbe79bd