1. 25 Aug, 2021 12 commits
  2. 23 Aug, 2021 1 commit
    • Arun Raghavan's avatar
      combine-sink: Set origin_sink for each output stream · 404795ad
      Arun Raghavan authored and PulseAudio Marge Bot's avatar PulseAudio Marge Bot committed
      While the threading model for combine is different from other filters
      (which expect to just piggy-back on the I/O thread of the most
      downstream sink), it might still be valuable to set this field to
      indicate that this sink input is intended to behave as a filter stream
      rather than a conventional stream.
      
      At the very least, routing behaviour and cycle detection should act on
      these streams as with any other filter.
      
      Part-of: <pulseaudio/pulseaudio!399>
      404795ad
  3. 11 Aug, 2021 4 commits
    • acheronfail's avatar
      pactl: add format flag for JSON output · 19adddee
      acheronfail authored and PulseAudio Marge Bot's avatar PulseAudio Marge Bot committed
      Part-of: <!497>
      19adddee
    • Igor Kovalenko's avatar
      build-sys: meson: Check if cpuid.h header is usable · 1b96b49f
      Igor Kovalenko authored and PulseAudio Marge Bot's avatar PulseAudio Marge Bot committed
      With clang compiler including cpuid.h will produce error if architecture is not
      x86-based, and cheching if cpuid.h exists via Meson has_header() is not enough.
      
      Fix this by creating a list of headers checked to be usable via Meson
      check_header() function, and move cpuid.h to that list.
      
      Part-of: <pulseaudio/pulseaudio!614>
      1b96b49f
    • Igor Kovalenko's avatar
      42af3ee0
    • Takashi Sakamoto's avatar
      Revert "udev: use ID_MODEL/ID_VENDOR to give friendly name for FireWire devices" · 3fcd5e39
      Takashi Sakamoto authored and PulseAudio Marge Bot's avatar PulseAudio Marge Bot committed
      This reverts commit 3ac73598.
      
      Systemd v249 has new entries of hwdb for node and unit in IEEE 1394 bus
      (hwdb.d/80-ieee1394-unit-function.hwdb). It can obsolete my workaround
      added by commit 3ac73598
      
       ("udev: use ID_MODEL/ID_VENDOR to give
      friendly name for FireWire devices"). The hwdb entry is handy prepared.
      When user finds missing entry, it's preferable to file issue or merge
      request in systemd project site.
      
      IEEE 1394 bus is enough legacy and it's easy to expect that few developer
      can evaluate the change. For reviewers, I describe the original issues and
      the integration of hwdb in systemd side.
      
      In systemd, udev rule for sound card (rules.d/78-sound-card.rules) has
      below line to assign information in hwdb to instance for sound card.
      
      ```
      IMPORT{builtin}="hwdb"
      ```
      
      In the case, the udev hwdb builtin finds information according to
      modalias by following nodes in device topology tree toward root. For
      sound card associated to unit in node in IEEE 1394 bus, it's inconvenient
      since hwdb had no entry for the unit. The instance for node in IEEE 1394
      bus doesn't have modalias. As a result, the builtin reaches 1394 OHCI
      controller in PCI Express bus which maintains the IEEE 1394 bus, then the
      value for ID_VENDOR_FROM_DATABASE and ID_MODEL_FROM_DATABASE properties
      from hwdb of pci device (hwdb.d/20-pci-vendor-model.hwdb) for the sound
      card.
      
      For example, when two nodes are in IEEE 1394 bus and one of them has
      unit instance for audio and music functions, the topology of the bus is
      depicted in following diagram:
      
      ```
       * 1394 OHCI controller (pci*, modalias)
         * node A - (pci*/fw0, /dev/fw0)
         * node B - (pci*/fw1, /dev/fw1)
           * unit B-1 - (pci*/fw1/fw1.0, modalias)
             * sound card 0 - (pci*/fw1/fw1.0/sound/card0, card0)
      ```
      
      In the case,  the udev hwdb builtin picks up from hwdb of pci device for
      the sound card:
      
      ```
      $ udevadm test-builtin hwdb /sys/class/sound/card2
      Load module index
      Parsed configuration file /usr/lib/systemd/network/99-default.link
      Parsed configuration file /usr/lib/systemd/network/73-usb-net-by-mac.link
      Created link configuration context.
      ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
      ID_PCI_SUBCLASS_FROM_DATABASE=FireWire (IEEE 1394)
      ID_PCI_INTERFACE_FROM_DATABASE=OHCI
      ID_VENDOR_FROM_DATABASE=Texas Instruments
      ID_MODEL_FROM_DATABASE=XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express]
      Unload module index
      Unloaded link configuration context.
      ```
      
      The aim of my workaround is to avoid using ID_VENDOR_FROM_DATABASE and
      ID_MODEL_FROM_DATABASE for sound card associated to unit in IEEE 1394
      bus. Instead, ID_VENDOR and ID_MODEL properties are used.
      
      However, it has another issue. For the properties, the udev rule for
      sound card has the other lines for sound card associated to unit in
      IEEE 1394 bus, below:
      
      ```
      SUBSYSTEMS=="firewire", ATTRS{guid}=="?*", \
        ENV{ID_BUS}="firewire", ENV{ID_SERIAL}="$attr{guid}", ENV{ID_SERIAL_SHORT}="$attr{guid}", \
        ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{model}", \
        ENV{ID_VENDOR}="$attr{vendor_name}", ENV{ID_MODEL}="$attr{model_name}"
      SUBSYSTEMS=="firewire", GOTO="skip_pci"
      ```
      
      The values of ID_VENDOR and ID_MODEL properties come from vendor_name and
      model_name attributes in parent instance of the sound card, therefore
      they come from audio and music units in IEEE 1394 bus. Unfortunately
      these attributes are not available always.
      
      All of nodes in IEEE 1394 bus should have configuration ROM in place
      according to IEEE 1212 and Linux FireWire subsystem parses the content of
      ROM to detect units in the node. At the same time, the subsystem manages
      to detect information about vendor and model according to standard layout
      defined by 1394 Trading Association[1].
      
      When the content of ROM is against the standard, the subsystem is
      discouraged the name detection.  In the case, vendor_name and model_name
      attributes are not available, and supplemental information should be from
      software implementation.
      
      The new hwdb (hwdb.d/80-ieee1394-unit-function.hwdb) added to systemd v249
      can solve the above issues. The prepared names for vendor and model in
      hwdb are assigned to both node and unit. The udev hwdb builtin can find
      the vendor and model names for the unit according to modalias before
      arriving at pci-device. Regardless of standard or non-standard
      configuration ROM, the hwdb gives prepared names of vendor and model.
      
      This is an example of Mark of the Unicorn (MOTU) Traveler. The search
      finishes at instance for unit in IEEE 1394 bus expectedly:
      
      ```
      $ udevadm test-builtin hwdb /sys/class/sound/card2
      Load module index
      Parsed configuration file /usr/lib/systemd/network/99-default.link
      Parsed configuration file /usr/lib/systemd/network/73-usb-net-by-mac.link
      Created link configuration context.
      ID_MODEL_FROM_DATABASE=Traveler
      ID_VENDOR_FROM_DATABASE=MOTU
      IEEE1394_UNIT_FUNCTION_AUDIO=1
      IEEE1394_UNIT_FUNCTION_MIDI=1
      Unload module index
      Unloaded link configuration context.
      ```
      
      [1] Configuration ROM for AV/C Devices 1.0 (Dec. 12, 2000, 1394 Trading
          Association, TA Document 1999027)
      Signed-off-by: Takashi Sakamoto's avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Part-of: <pulseaudio/pulseaudio!610>
      3fcd5e39
  4. 06 Aug, 2021 2 commits
  5. 30 Jul, 2021 10 commits
  6. 28 Jul, 2021 9 commits
  7. 27 Jul, 2021 2 commits