1. 28 May, 2019 1 commit
  2. 27 May, 2019 1 commit
  3. 25 May, 2019 2 commits
    • Georg Chini's avatar
      core: add simple message interface · 755884d1
      Georg Chini authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      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
    • Georg Chini's avatar
      core-util: Avoid usage of pa_strbuf in pa_escape() · ab9fed95
      Georg Chini authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      The current code uses a pa_strbuf to construct the escaped string. This
      will generate a linked list member for each character which may be very
      inefficient.
      This patch avoids the use of pa_strbuf by allocating a sufficiently large
      string which can be filled with the output data.
      ab9fed95
  4. 23 May, 2019 2 commits
    • Nate's avatar
      Expose control param to alsa-card module · f34ea0f0
      Nate authored and Georg Chini's avatar Georg Chini committed
      f34ea0f0
    • Tanu Kaskinen's avatar
      core: send subscription events when the configured default sink or source changes · 59005d16
      Tanu Kaskinen authored and Georg Chini's avatar Georg Chini committed
      These events were missing, because the
      pa_core_update_default_sink/source() calls were assumed to send the
      subscription events when necessary. Often that indeed is the case, but
      if the current configured default sink doesn't exist, and then the
      current default sink is set as the configured default sink, the
      configured default sink changes but the default sink doesn't, and in
      this case pa_core_update_default_sink() doesn't send the change event.
      
      module-default-device-restore relies on getting a notification whenever
      the configured default sink changes, and the missing event meant that
      the files containing the configured sink and source weren't updated in
      some cases.
      
      Fixes: #648
      59005d16
  5. 22 May, 2019 1 commit
  6. 21 May, 2019 2 commits
  7. 20 May, 2019 2 commits
  8. 08 May, 2019 1 commit
  9. 07 May, 2019 2 commits
  10. 04 May, 2019 2 commits
  11. 22 Apr, 2019 1 commit
    • Takashi Iwai's avatar
      alsa: Fix inclusion of use-case.h · b89d33bb
      Takashi Iwai authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      
      
      The recent change in ALSA upstream stripped -I$include/alsa path from
      pkgconfig.  We already fixed for this change in some places but still
      the code for UCM was overlooked, and this resulted in the unresolved
      symbols in alsa card module. Fix them as well.
      Signed-off-by: Takashi Iwai's avatarTakashi Iwai <tiwai@suse.de>
      b89d33bb
  12. 17 Apr, 2019 1 commit
  13. 12 Apr, 2019 7 commits
    • Tanu Kaskinen's avatar
      build-sys: Fix the Meson build · 2f6a46ca
      Tanu Kaskinen authored
      The recent bluetooth patches didn't update the Meson build system.
      2f6a46ca
    • pali's avatar
      bluetooth: Set correct endianity of audio samples for SBC codec · 1b6e5b85
      pali authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      Pulseaudio SBC codec defines that audio samples are in PA_SAMPLE_S16LE
      format which is little endian. But libsbc library expects audio samples by
      default in host endianity which is big endian on big endian system. So SBC
      support on big endian system is broken. To fix this problem tell libsbc
      library that audio samples are in little endian to match PA_SIMPLE_S16LE
      sample format.
      
      Bug: https://bugs.freedesktop.org/show_bug.cgi?id=91359
      1b6e5b85
    • pali's avatar
      bluetooth: Clean up SBC bitpool calculation · 63add82c
      pali authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      Remove dead code and replace numeric bitpool values by macro definitions.
      
      Maximal bitpool value in fill_capabilities() was reduced from 64 to 53
      (SBC_BITPOOL_HQ_JOINT_STEREO_44100) because default_bitpool() already set
      maximal value to 53.
      
      This patch does not change SBC behavior as maximal bitpool was already
      limited to 53. So it is just clean up.
      63add82c
    • pali's avatar
      bluetooth: Add missing validations for SBC codec parameters · 745c161c
      pali authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      745c161c
    • pali's avatar
      bluetooth: Modular API for A2DP codecs · 106aa914
      pali authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      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
    • pali's avatar
      bluetooth: Update a2dp-codecs.h from upstream bluez project · e8c4638f
      pali authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      e8c4638f
    • pali's avatar
      bluetooth: policy: Remove BlueZ 4 related code · e81e7a2c
      pali authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      e81e7a2c
  14. 10 Apr, 2019 3 commits
  15. 31 Mar, 2019 1 commit
    • Arun Raghavan's avatar
      thread-mainloop: Add API for running a callback unlocked · 363b1ae6
      Arun Raghavan authored and Georg Chini's avatar Georg Chini committed
      This adds API to allow clients to schedule a callback in the mainloop
      thread without the mainloop lock being held. This is meant for a case
      where the client might be dealing with locking its own objects in
      addition to the mainloop thread itself. In this case, it might need ton
      control the locking order of the two, to match the order in other
      threads, as it might not always be able to allow for its objects to be
      locked after the mainloop thread lock.
      363b1ae6
  16. 29 Mar, 2019 4 commits
    • Georg Chini's avatar
      null-source: fix multiple bugs · 824e685a
      Georg Chini authored and Arun Raghavan's avatar Arun Raghavan committed
      The current null-source implementation has several bugs:
      
      1) The latency reported is the negative of the correct latency.
      2) The memchunk passed to pa_source_post() is not initialized
      with silence.
      3) In PA_SOURCE_MESSAGE_SET_STATE the timestamp is always set
      when the source transitions to RUNNING state. This should only
      happen when the source transitions from SUSPENDED to RUNNING
      but also if it changes from SUSPENDED to IDLE.
      4) The timing of the thread function is incorrect. It always
      uses u->latency_time, regardless of the specified source
      latency.
      5) The latency_time argument seems pointless because the source
      is defined with dynamic latency.
      
      This patch fixes the issues by
      1) inverting the sign of the reported latency,
      2) initializing the memchunk with silence,
      3) changing the logic in PA_SOURCE_MESSAGE_SET_STATE so that
      the timestamp is set when needed,
      4) using u->block_usec instead of u->latency_time for setting
      the rtpoll timer and checking if the timer has elapsed,
      5) removing the latency_time option.
      824e685a
    • Sascha Silbe's avatar
      remap: support S32NE work format · 034b7782
      Sascha Silbe authored and Arun Raghavan's avatar Arun Raghavan committed
      So far PulseAudio only supported two different work formats: S16NE if
      it's sufficient to represent the input and output formats without loss
      of precision and FLOAT32NE in all other cases. For systems that use
      S32NE exclusively, this results in unnecessary conversions from S32NE to
      FLOAT32NE and back again.
      
      Add S32NE remap operations and make use of them (for the COPY and
      TRIVIAL resamplers) if both input and output format are S32NE. This
      avoids the back and forth conversions between S32NE and FLOAT32NE,
      significantly improving performance for those cases.
      034b7782
    • Sascha Silbe's avatar
      tests: test NEON 2-channel->4-channel rearrange · 1e4fb614
      Sascha Silbe authored and Arun Raghavan's avatar Arun Raghavan committed
      We have optimised 2-channel->4-channel rearrange remap functions. Test
      them.
      1e4fb614
    • Sascha Silbe's avatar
      tests: fix possible segfault in cpu-remap-test · ac4a5026
      Sascha Silbe authored and Arun Raghavan's avatar Arun Raghavan committed
      pa_init_remap_func() takes care to initialise pa_remap_t.do_remap to
      NULL before calling init_remap_func (the CPU-specific remap init
      function) and invokes init_remap_c if init_remap_func did not set
      pa_remap_t.do_remap to non-NULL. remap_init_test_channels() calls
      init_remap_func() directly so it must make sure pa_remap_t.do_remap is
      set to NULL. Otherwise we'll end up with a random value in
      pa_remap_t.do_remap if there is no CPU-optimised remap function for the
      current operation.
      ac4a5026
  17. 27 Mar, 2019 2 commits
  18. 26 Mar, 2019 4 commits
  19. 25 Mar, 2019 1 commit