1. 19 Sep, 2017 3 commits
  2. 18 Sep, 2017 7 commits
    • Tanu Kaskinen's avatar
      update NEWS · 2693e3fe
      Tanu Kaskinen authored
    • Arun Raghavan's avatar
      bluez: Don't crash on strange MTU sizes · b6bba65d
      Arun Raghavan authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      We got reports of this with automatically detected MTUs that weren't
      frame aligned.
    • Arun Raghavan's avatar
      bluez: Don't autodetect MTU by default · 82e7fe41
      Arun Raghavan authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      This breaks a lot of headsets, so disabling by default. Can be
      re-enabled in configuration for specific hardware where it is deemed
      Also added some debug logging to be able to examine what MTU size is
      reported by the device.
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102660
    • Tanu Kaskinen's avatar
      alsa-mixer: add mixer handling to the fallback stereo case · 56b6e325
      Tanu Kaskinen authored
      Some sound cards don't have any alsa-lib configuration, but they used to
      work well enough up to PulseAudio 10. PulseAudio 11 stopped using "hw:0"
      for the analog-stereo mapping, and instead defined it as a fallback
      mapping without any mixer handling. As a result, switching between
      headphones and speakers stopped working without changing the mixer
      settings manually at least on Toshiba Chromebook 2. This patch adds the
      mixer handling back to the fallback mapping.
      I also renamed "unknown-stereo" to "stereo-fallback", because I like
      that name more.
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102560
    • Tanu Kaskinen's avatar
      sink: remove priority bonus for the "internal" form factor · bd151646
      Tanu Kaskinen authored
      We're supposed to prioritize USB sound cards over PCI sound cards, but
      the priority bonus for the "internal" form factor prevents this from
      happening. Not all (if any) USB sound cards have the form factor
      property set, whereas at least on my laptop the on-board sound card has
      the form factor set to "internal".
    • Tanu Kaskinen's avatar
      sink, source: fix out of date comments · f63c13f6
      Tanu Kaskinen authored
      update_shared_real_volume() doesn't exist. I checked that
      update_real_volume() does what the comments claim
      update_shared_real_volume() to do.
    • Tanu Kaskinen's avatar
      sink, source: don't try to update volumes of not-yet-linked devices · 95d61875
      Tanu Kaskinen authored
      The order of the pa_sink_input_put() and pa_sink_put() calls in filter
      modules was swapped in commit edc465da ("virtual sources and sinks:
      Don't double attach a sink input or source output on filter load").
      If flat volumes and volume sharing is enabled, the pa_sink_input_put()
      call will update volumes of the whole tree of virtual sinks that are
      connected to the root sink. The recursive updating procedure tried to
      also update the volume of the new sink for which pa_sink_put() had not
      yet been called, causing an assertion failure.
      This patch tries to make sure that the volume of not-yet-linked sinks
      is never changed. pa_sink_put() will set the sink volume correctly, so
      it's fine to skip the not-yet-linked sinks during pa_sink_input_put().
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102549
  3. 09 Sep, 2017 2 commits
  4. 05 Sep, 2017 22 commits
    • Arun Raghavan's avatar
      always-source: Fix pa_module_load() usage · 703d95fd
      Arun Raghavan authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      The API changed slightly since the original patch was written.
    • Pierre Bossart's avatar
      sink: force suspend/resume on passthrough transitions · 15d28f21
      Pierre Bossart authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      A race condition prevents the AES non-audio bit from being set
      when enabling IEC61937 passthrough on resume with no sink-input
      connected (pa_sink_is_passthrough returns false). The non-audio
      bit should really be set when opening the sink.
      Force the sink to suspend/resume when actually entering passthrough
      mode, and likewise force a suspend-resume on leaving passthrough mode.
      Tested with E-AC3 streams which do need the AES bit set for my
      Onkyon receiver to detect the format instead of playing it as
      Signed-off-by: Pierre Bossart's avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    • Sebastian Dröge's avatar
      Implement module-always-source · b4d24432
      Sebastian Dröge authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      This is basically a copy of module-always-sink but doing the same for
      sources. Whenever no source is available, a module-null-source is loaded
      and whenever a new source is available again, module-null-source is
      By this, anything using a source will automatically be switched to the
      null source when the actual source disappears, and back to the actual
      source if it appears again.
    • Tanu Kaskinen's avatar
      build-sys: add the Arctis configuration · c7fe78c9
      Tanu Kaskinen authored
    • Tanu Kaskinen's avatar
      bluetooth: recognize another HSP HS UUID · 9c7a9be7
      Tanu Kaskinen authored
      There are actually two HSP HS UUIDs. My theory is that the second one
      was added, because someone was not happy with the old UUID being used
      for identifying two different things (the HSP profile as a whole, and
      the HS role within the HSP profile). Some headsets only use the new
      UUID, and those headsets won't work if we don't recognize the new UUID.
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=93898
    • Johan Heikkilä's avatar
      alsa-mixer: add support for Steelseries Arctis 7 headset · 15386a71
      Johan Heikkilä authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
    • Ian Ray's avatar
      alsa-mixer: round, not truncate, in to_alsa_dB · 739a4b3d
      Ian Ray authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      to_alsa_dB() returns a result rounded to two decimal places (instead of
      using integer truncation) to avoid small errors when converting between
      dB and volume.
      Consider playback at -22 dB (which is supported by ALSA) but results in
      the higher level of -21 dB plus software attenuation.
          pa_sw_volume_from_dB(-22) = 28172
          pa_sw_volume_to_dB(28172) = -21.9997351
          to_alsa_dB(-21.9997351)   = -2199
          ALSA value 106 = -2200
          ALSA value 107 = -2100
          rounding = +1  /* "accurate or first above" */
          snd_mixer_selem_ask_playback_dB_vol(me, -2199, rounding, &alsa_val)
          alsa_val = -2100
      Signed-off-by: default avatarIan Ray <ian.ray@ge.com>
    • Colin Leroy's avatar
      cli-command: don't exit on "module already loaded" errors · f0dfddea
      Colin Leroy authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      Some modules may only be loaded once, and trying to load them
      twice from default.pa makes PulseAudio startup fail. While that could
      be considered a user error, it's nicer to not be so strict. It's not
      necessarily easy to figure what went wrong, if for example the user
      plays with RAOP and adds module-raop-discover to default.pa, which first
      works fine, but suddenly stops working when the user at some point
      enables RAOP support in paprefs. Enabling RAOP in paprefs makes
      module-gconf load the module too, so the module gets loaded twice.
      This patch adds a way to differentiate module load errors, and
      make cli-command ignore the error when the module is already
    • Tanu Kaskinen's avatar
      main: set umask to 077 instead of 022 · 1a667153
      Tanu Kaskinen authored
      It was reported that PulseAudio weakens the umask to 022 if it's
      initially set to 077. That's not as big problem as it might seem,
      but it's still a problem. The umask affects the permissions of the state
      files, and those aren't readable by other users anyway in the per-user
      mode, because PulseAudio puts them in directories that aren't
      accessible to other users. In the system mode the state files will be
      readable by everyone, though, even by those users that don't otherwise
      have access to PulseAudio. The state files are slightly
      privacy-sensitive, because they contain e.g. history of applications
      that have used PulseAudio.
      I can't think of any use cases where access to the state files by other
      users would be necessary, either in the per-user mode or in the system
      mode, so let's use umask 077. This doesn't prevent access to any
      sockets in the system mode, because all directories that PulseAudio
      creates in the system mode will have permissions 755 regardless of the
      umask, and the sockets themselves always have permissions 777.
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102060
    • Tanu Kaskinen's avatar
      cli-command: unload modules synchronously · 95404ce3
      Tanu Kaskinen authored
      Users may want to change the parameters of some load-once modules in
      ~/.config/pulse/default.pa. That should be possible by including
      /etc/pulse/default.pa from the per-user configuration file, and then
      unloading a module and reloading it with different parameters. However,
      that doesn't work, because the unload-module command will not unload the
      module immediately, so the subsequent load-module command will fail when
      the module can be loaded only once.
      This patch makes the module unloading synchronous. "pacmd unload-module
      module-cli-protocol-unix" is something that might not like this change,
      since the command will unload the code that is processing the command,
      but I tested it and it works fine. When pa_module_unload() is called,
      that won't yet remove the module code from memory, the lt_dlclose() call
      is postponed until it's safe to remove the code from memory.
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102205
    • Tanu Kaskinen's avatar
      device-port, switch-on-port-available: fix automatic profile changing when current profile is off · 5f27c2ec
      Tanu Kaskinen authored
      module-switch-on-port-available didn't do anything when a port changes
      its status if the card didn't have any sinks or sources. This was to
      avoid bad things during card initialization, but the if condition also
      prevented any profile switches away from the "off" profile, because the
      card has no sinks or sources when the "off" profile is active.
      pa_card nowadays has the "linked" flag that
      module-switch-on-port-available could have checked instead, but since it
      doesn't make sense to emit port status change events before the card has
      been initialized, I added the check in pa_device_port_set_available()
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=101794
    • Tanu Kaskinen's avatar
    • Tanu Kaskinen's avatar
      alsa-mixer: set PCM Capture Source for iec958 input · ec325304
      Tanu Kaskinen authored
      It was reported that on a certain USB card, identified as
      "0d8c:0102 C-Media Electronics, Inc. CM106 Like Sound Device",
      the "PCM Capture Source" element had to be set to "IEC958 In" before
      the iec958 input would work.
      The iec958-stereo-input.conf file didn't exist before, although the path
      was referenced in the default.conf profile configuration file.
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=101973
    • Tanu Kaskinen's avatar
      raop: silence a Coverity complaint · 295d4db8
      Tanu Kaskinen authored
      CID: 1398155
    • Georg Chini's avatar
      bluez5-device: Set transport state correctly for AG role · e03e01b0
      Georg Chini authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      When connecting a headset via the native backend, the transport state was
      not updated correctly.
      This patch sets the state to PLAYING in transport_acquire() if necessary.
    • Tanu Kaskinen's avatar
      equalizer-sink: update sink description when moving · 9e725ac3
      Tanu Kaskinen authored
      If the description is not updated when moving, the old automatically
      generated description will refer to the old master sink after the move,
      which is not nice.
    • Georg Chini's avatar
      loopback: Use new allow_negative flag of pa_{source, sink}_get_latency_within_thread() · 1d29247a
      Georg Chini authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      Setting the allow_negative flag of pa_{source,sink}_get_latency_within_thread() to true
      leads to improved end to end latency estimation and to correct handling of negative port
      latency offsets.
    • Hui Wang's avatar
      alsa-mixer: Add support for usb audio in the Dell dock TB16 · 60c0edd5
      Hui Wang authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      There are one headset jack on the front panel of TB16, through this
      jack, we have one stereo headphone output (hw:%f,0,0) and one mono
      headset-mic input (hw:%f,0,0); and there is one speaker output jack
      (hw:%f,1,0) on the rear panel of TB16.
      The detail information of the Dell dock TB16:
      Signed-off-by: Hui Wang's avatarHui Wang <hui.wang@canonical.com>
    • Khem Raj's avatar
      padsp: Make it compile on musl · 66885ad6
      Khem Raj authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      break assumptions on glibc and there is no stat64 on non
      glibc C libraries
      See pulseaudio bug
      Signed-off-by: Khem Raj's avatarKhem Raj <raj.khem@gmail.com>
    • KimJeongYeon's avatar
      filter-apply: Do not re-route stream to master sink/source when manually moved to filter · 46fb1b8c
      KimJeongYeon authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      Currently, if a stream is manually moved to a filter sink or source managed by
      module-filter-apply, the stream will be silently re-routed to the master sink
      or source, because the filter.apply property is not set on that stream. We can
      assume, that the users intention however was to have the stream filtered.
      Therefore this patch changes the logic, so that the stream will not be moved
      to the master but remains on the filter sink or source. To handle the change
      of a property correctly, the filter.apply property must be set temporarily.
      An additional property filter.apply.set_by_mfa was introduced to mark those
      streams, so that filter.apply can be removed again when the stream moves away
      from the filter.
    • Tanu Kaskinen's avatar
      NEWS: add GNU Hurd support · f4e0a568
      Tanu Kaskinen authored
      For some reason this was left out when copying the feature list from the
      release notes.
    • Tanu Kaskinen's avatar
      update NEWS · 8db68160
      Tanu Kaskinen authored
  5. 03 Sep, 2017 1 commit
    • Georg Chini's avatar
      bluez5-device: lower sink/source priority for Audio gateway or a2dp source · 44d03c0a
      Georg Chini authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      When a phone is connected via bluetooth and switches to HFP, the sinks
      and sources will have higher priority than the built-in devices.
      Therefore they are chosen as default and module-bluetooth-policy will
      incorrectly insert loopback modules that loop the phone back to itself.
      This patch fixes the problem by lowering the priority of sink and source
      if PulseAudio is in the headset role. The priority is also lowered if the
      device is an a2dp source. In both cases it does not make sense to make the
      source or sink default unless there is no other sound device available.
  6. 02 Sep, 2017 1 commit
    • Tanu Kaskinen's avatar
      core: ignore devices that are not linked when choosing the default sink or source · 970b475a
      Tanu Kaskinen authored
      Sources should probably be added to pa_core.sources in pa_source_put(),
      but currently they're added in pa_source_new(). A lot of stuff can
      happen between the pa_source_new() and pa_source_put() calls, and
      it has happened that the default source was updated during this time.
      Therefore, pa_core_update_default_source() needs to take it into account
      that not every source is necessarily linked.
  7. 17 Aug, 2017 2 commits
  8. 15 Aug, 2017 1 commit
  9. 05 Aug, 2017 1 commit