1. 26 Apr, 2020 15 commits
  2. 17 Apr, 2020 1 commit
  3. 15 Apr, 2020 6 commits
    • pali's avatar
      bluetooth: Add more variants of SBC codec · 8c1a6eec
      pali authored
      Specify configuration for Low, Middle, High and eXtreme Quality of SBC
      codec. SBC codec in eXtreme Quality has higher quality than aptX.
      Automatic Quality mode matches configuration of SBC codec which was used
      before this change. Which means that it accept configuration between Low
      and High quality.
      Current SBC code was extended to allow definitions of arbitrary
      configuration variants of SBC codec parameters.
      SBC XQ testing is in following article:
    • pali's avatar
      bluetooth: Add A2DP FastStream codec support · 3f3d3a0f
      pali authored
      This patch provides support for FastStream codec in bluetooth A2DP profile.
      FastStream codec is bi-directional, which means that it supports both music
      playback and microphone voice at the same time.
      FastStream codec is just SBC codec with fixed parameters. For playback are
      used following parameters: 48.0kHz or 44.1kHz, Blocks 16, Sub-bands 8,
      Joint Stereo, Loudness, Bitpool = 29 (data rate = 212kbps, packet size =
      (71+1)*3 <= DM5 = 220, with 3 SBC frames). SBC frame size is 71 bytes, but
      FastStream is zero-padded to the even size (72). For microphone are used
      following SBC parameters: 16kHz, Mono, Blocks 16, Sub-bands 8, Loudness,
      Bitpool = 32 (data rate = 72kbps, packet size = 72*3 <= DM5 = 220, with
      3 SBC frames).
      So FastStream codec is equivalent to SBC in Low Quality settings. But the
      main benefit of FastStream codec is support for microphone voice channel
      for audio calls. Compared to bluetooth HSP profile (with CVSD codec), it
      provides better audio quality for both playback and recording.
    • pali's avatar
      bluetooth: Add A2DP aptX and aptX HD codecs support · 09e87210
      pali authored
      This patch provides support for aptX and aptX HD codecs in bluetooth A2DP
      profile. It uses open source LGPLv2.1+ licensed libopenaptx library which
      can be found at https://github.com/pali/libopenaptx.
      aptX for s24 stereo samples provides fixed 6:1 compression ratio and
      bitrate 352.8 kbit/s, aptX HD provides fixed 4:1 compression ratio and
      bitrate 529.2 kbit/s.
      According to soundexpert research, aptX codec used in bluetooth A2DP is no
      better than SBC High Quality settings. And you cannot hear difference
      between aptX and SBC High Quality, aptX is just a copper-less overpriced
      audio cable.
      aptX HD is high-bitrate version of aptX. It has clearly noticeable increase
      in sound quality (not dramatic though taking into account the increase in
    • pali's avatar
      bluetooth: policy: Treat bi-directional A2DP profiles as suitable for VOIP · 0123c32a
      pali authored
      Previously module-bluetooth-policy was switching from A2DP to HSP profile
      when VOIP application started recording of source. Now it switch to profile
      with the highest priority which has both sink and source. In most cases it
      is HSP profile, but it can be also bi-directional A2DP profile (e.g.
      FastStream codec) as it has better audio quality.
    • pali's avatar
      bluetooth: Set initial A2DP profile which bluez already activated · 878401d9
      pali authored
      Bluez and remote device decide which A2DP codec would use. Use this
      selected A2DP codec as initial profile in pulseaudio.
      In most cases it is either last used codec or codec with higher priority by
      defined by remote device.
      To detect which A2DP profile was activated by bluez, look at bluez
      transport state.
    • pali's avatar
      bluetooth: Implement A2DP codec switching and backchannel support · efef94a8
      pali authored
      Some A2DP codecs (like FastStream or aptX Low Latency) are bi-directional
      and can be used for both music playback and audio calls. This patch
      implements usage of backchannel if A2DP codec provided by pulseaudio API
      supports it.
      A2DP codec switching needs new version of bluez as older version does not
      provide needed org.freedesktop.DBus.ObjectManager and RegisterApplication
      DBus APIs.
      Pulseaudio use for each A2DP codec separate pulseaudio profile, therefore
      codec switching is implemented via changing pulseaudio profile and
      currently used A2DP codec is visible in pulseaudio profile.
      Getting list of supported codecs by remote device is supported only by new
      version of bluez daemon.
      If old bluez version is detected then only one SBC codec is supported.
  4. 14 Apr, 2020 4 commits
    • pali's avatar
      bluetooth: policy: Reflect a2dp profile names · 6f25f0ee
      pali authored
      In next patches, codec name is appended end the end of a2dp profile names.
    • pali's avatar
      bluetooth: Change codec API for choosing remote endpoint · d055e4b5
      pali authored
      Current codec API for choosing remote endpoint was not suitable for
      implementing fallback to another endpoint when first chosen one was not
      possible to establish.
      To overcome this problem change codec API to rather provide generic method
      for comparing two endpoints by their capabilities. Return value is standard
      value what comparator function returns (-1, 0, 1). It can be used e.g. for
      searching the best remote endpoint (like did previous API method) or
      creating a full list of all endpoints in preferred order (e.g. by sorting
      Currently this method is not used (neither old choose remote endpoint).
      It is used by code for switching A2DP codec which is in next patches.
    • pali's avatar
      bluetooth: Do not export pa_a2dp_codecs array · 26675195
      pali authored
      It is not used directly outside of a2dp-codec-util.c file.
    • pali's avatar
      bluetooth: Add missing newlines into inline XML document · 69703c58
      pali authored
      When calling introspection function, newlines in XML document makes it
      better readable. There are already leading spaces for indentation but
      newlines were probably forgotten.
  5. 10 Apr, 2020 1 commit
  6. 09 Apr, 2020 4 commits
  7. 26 Mar, 2020 1 commit
  8. 25 Mar, 2020 1 commit
  9. 20 Mar, 2020 1 commit
  10. 19 Mar, 2020 1 commit
  11. 17 Mar, 2020 1 commit
    • Tanu Kaskinen's avatar
      ucm: Don't log errors during normal operation · 9d36210b
      Tanu Kaskinen authored
      It's completely normal to not have explicit channel configuration for
      stereo devices. In fact, the ALSA developers actively avoid configuring
      the channels for stereo devices.
      I also dropped the word "duplex" from the messages, because "stereo
      duplex" implies bidirectionality, but most devices use one direction
  12. 11 Mar, 2020 1 commit
    • Philip Withnall's avatar
      daemon: Add --log-target=journal to pulseaudio.service · 60531aef
      Philip Withnall authored
      When running under systemd from its `.service` file, the daemon is
      started with `--daemonize=no`. This means that the default logging
      target is `stderr` (see the documentation for `--log-target` in
      `pulse-daemon.conf(5)`). That works fine, but results in all the
      structured logging data from the `pa_log()` calls being thrown away and
      not making it into the journal.
      In order to preserve structured logging data, and hence make the
      messages in the journal a little more useful (for example, allowing the
      user to filter by message priority), explicitly pass
      `--log-target=journal` in the `.service` file. This should always be
      appropriate because the journal should always be used with systemd.
      Signed-off-by: Philip Withnall's avatarPhilip Withnall <withnall@endlessm.com>
  13. 05 Mar, 2020 1 commit
    • Khem Raj's avatar
      remap/arm: Adjust inline asm constraints · 3450d1fc
      Khem Raj authored
      gcc10 can effectively emit single precision registers if right
      operand modifier constraint is not in use
      This results in assembler rejecting the code
      /tmp/ccEG4QpI.s:646: Error: VFP/Neon double precision register expected -- `vtbl.8 d3,{d0,d1},s8'
      /tmp/ccEG4QpI.s:678: Error: invalid instruction shape -- `vmul.f32 d0,d0,s8'
      Therefore add %P qualifier to request double registers sinece 'w' could
      mean variable could be stored in s0..s14 and GCC defaults to printing out s0..s14.
      Note those registers map to d0..d7 also.
      Output generated is exactly same with gcc9, and it also now compiles
      with gcc10
      Its not documented well in gcc docs and there is a ticket for that
      Signed-off-by: Khem Raj's avatarKhem Raj <raj.khem@gmail.com>
  14. 01 Mar, 2020 1 commit
  15. 15 Feb, 2020 1 commit