1. 14 Aug, 2019 3 commits
    • Lucas Stach's avatar
      meson: add stdint.h to checked headers · 25308fe8
      Lucas Stach authored
      Without this check we won't ever define HAVE_STDINT_H, which isn't used
      in pulse directly, but is needed by e.g. the speex headers to work
      correctly.
      25308fe8
    • Lucas Stach's avatar
      meson: allow to build bluez support without libbluetooth · 1911ef16
      Lucas Stach authored
      pulseaudio does not link against libbluetooth, as it's only talking to the
      bluez daemon over dbus. So the build dependency on libbluetooth is overly
      restrictive, as some embedded systems choose to ship without libbluetooth
      but still have bluez daemon support.
      
      This syncs the meson to the autotools configuration behavior by changing
      the bluez option to a default on boolean.
      1911ef16
    • Lucas Stach's avatar
      meson: fix build files list when building with NEON · eb70672c
      Lucas Stach authored
      Sync the meson NEON build files list with the autotools build
      sources list. Fixes "ERROR: File svolume_neon.c does not exist."
      eb70672c
  2. 13 Aug, 2019 2 commits
  3. 09 Aug, 2019 2 commits
  4. 07 Aug, 2019 1 commit
  5. 06 Aug, 2019 1 commit
  6. 05 Aug, 2019 6 commits
  7. 28 Jul, 2019 1 commit
  8. 25 Jul, 2019 3 commits
  9. 24 Jul, 2019 3 commits
    • pali's avatar
      bluetooth: Fix usage of RTP structures in SBC codec · 9e70d052
      pali authored
      Rename struct rtp_payload to rtp_sbc_payload as it is specific for SBC
      codec payload.
      
      Add proper checks for endianity in rtp.h header and use uint8_t type
      where appropriated.
      
      Field frame_count is only 4 bit number, so add checks to prevent overflow.
      
      And because is_fragmented field is not parsed by decoder there is no
      support for decoding fragmented SBC frames. So throw an error in this case.
      9e70d052
    • pali's avatar
      bluetooth: Change A2DP codec API of reset() method to indicate failure · 064277b4
      pali authored
      SBC codec reset() method may fail, so propagate this failure to caller.
      064277b4
    • pali's avatar
      bluetooth: Fix usage of MTU, buffer sizes and return values of encode/decode methods · 018b38ec
      pali authored
      Add explanation why minimal bitpool value is used in SBC codec as initial
      bitpool value for A2DP source.
      
      Set buffer size for reading/writing from/to A2DP socket to exact link MTU
      value. This would ensure that A2DP codec does not produce larger packet as
      maximal possible size which can be sent.
      
      Because A2DP socket is of SOCK_SEQPACKET type, it is guaranteed that
      we do not read two packets via one read/recvmsg call.
      
      Properly check for all return values of encode/encode methods of A2DP codec
      functions. They may fail at different levels. Also encode or decode API
      method may return zero length buffer (e.g. because of algorithmic delay of
      codec), so do not fail in this case.
      018b38ec
  10. 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
      !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
  11. 20 Jul, 2019 1 commit
  12. 16 Jul, 2019 1 commit
  13. 15 Jul, 2019 1 commit
    • Arun Raghavan's avatar
      svolume: Mark channel parameter as earlyclobber · e8fe04b2
      Arun Raghavan authored
      For all our MMX/SSE code, we use a temporary channel variable, assigned
      to the DI register, which is zero'ed as the very first operation in the
      inline assembly code, before any other code is run.
      
      With GCC 9.1, while using -O2, the DI register is also used for the
      input operand. This is perfectly legal, but causes our code to become
      incorrect because the output operand that is assigned to DI is not
      explicitly marked as being clobbered before inputs are read.
      
      This change fixes the problem by adding an earlyclobber annotation (&)
      to the DI output argument.
      e8fe04b2
  14. 11 Jul, 2019 3 commits
  15. 05 Jul, 2019 1 commit
  16. 04 Jul, 2019 2 commits
    • Arun Raghavan's avatar
      build-sys: Bump libpulse soversion · b427dfcd
      Arun Raghavan authored
      We've added new API and updated an enum. A bunch of function parameters
      have been marked as const, but this probably shouldn't count as a change
      anyway.
      b427dfcd
    • Arun Raghavan's avatar
      core-util: Fix detection when running in a VM · 2ed4f388
      Arun Raghavan authored
      The original code that was written was trying to detect what hypervisor
      we were running under, rather than testing the presence bit first. We
      don't really need the former, so let's use the more comprehensive latter
      instead.
      
      Fixes: #684
      2ed4f388
  17. 03 Jul, 2019 2 commits
    • Georg Chini's avatar
      sink-input: fix rewriting render memblockq when nothing should be rewound · 4c6bab43
      Georg Chini authored
      If process_rewind() is called with nbytes = 0, process_rewind() will
      nevertheless request a rewrite of the render memblockq.
      
      This patch fixes the problem by adding the render memblockq length to the
      rewrite amount only if nbytes > 0.
      4c6bab43
    • Georg Chini's avatar
      source-output: Fix rewinding bug · 1240afab
      Georg Chini authored
      Currently the rewind logic for the source output is broken if the output
      does not implement a process_rewind() callback. In that case, the read
      index of the delay memblockq is rewound. This is wrong, because the data
      that is going to be re-written was not yet read. Instead the write index
      should be rewound and the read index left untouched. This is the reason
      for the rewind glitches of monitor sources.
      1240afab
  18. 02 Jul, 2019 2 commits
    • Frédéric Danis's avatar
      bluetooth: Fix crash when disabling Bluetooth adapter · f89d64b9
      Frédéric Danis authored
      This crash occurs when PA is connected to a phone through the oFono
      backend.
      When disabling the Bluetooth adapter, pa_bluetooth_device is removed before
      hf_audio_card. Both keep refs on pa_bluetooth_transport. Those removal will
      call pa_bluetooth_transport_free() from device_free() (bluez5-util.c) and
      hf_audio_card_free() (backend-ofono.c).
      In the end, the call to pa_bluetooth_transport_free() calls
      pa_hasmap_remove() through pa_bluetooth_transport_unlink(), but since
      memory has already been freed, the second try results in a segfault.
      
      Triggering hf_audio_card removal during pa_bluetooth_device removal allows
      hf_audio_card to be freed at the right time.
      f89d64b9
    • Frédéric Danis's avatar
      bluetooth: Fix crash in setup_stream() · 661b13d5
      Frédéric Danis authored
      setup_stream() crashes when calling set_nonblock() with an invalid
      stream_fd.
      
      On a new call, the ofono backend gets notified of a new connection.
      The ofono backend sets the transport state to playing, and that triggers
      a profile change, which sets up the stream for the first time.
      Then module-bluetooth-policy sets up the loopbacks. The loopbacks get
      fully initialized before the crash.
      
      After module-bluetooth-policy has done its things, the execution
      continues in the transport state change hook. The next hook user is
      module-bluez5-device, whose handle_transport_state_change() function
      gets called. It will then set up the stream again even though it's
      already set up. I'm not sure if that's a some kind of a bug.
      setup_stream() can handle the case where it's unnecessarily called,
      though, so this second setup is not a big problem.
      
      The crash happens, because the connection died due to POLLHUP in the IO
      thread before the second setup_stream() call.
      661b13d5
  19. 01 Jul, 2019 3 commits
  20. 30 Jun, 2019 1 commit