]> git.alsa-project.org Git - alsa-plugins.git/log
alsa-plugins.git
6 years agoRelease v1.1.8 v1.1.8
Jaroslav Kysela [Mon, 7 Jan 2019 12:55:43 +0000 (13:55 +0100)]
Release v1.1.8

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoaaf: AVTPDU transmission periodicity
Andre Guedes [Sat, 8 Dec 2018 01:55:50 +0000 (17:55 -0800)]
aaf: AVTPDU transmission periodicity

When operating in playback mode (i.e. AVTP talker) the plugin is
expected to transmit the AVTPDUs in a periodical manner. The AVTPDU
period is defined by the number of audio frames per AVTPDU and the
sampling rate (see section 7.7 from AVTP spec [1] for further
information).

To enforce the AVTPDU periodicity, this patch leverages the SO_TXTIME
sockopt recently added to socket interface which enables the userspace
to specify when a given packet should be transmitted. The plugin
configures the transmission time from each AVTPDU so the expected
transmission interval is maintained.

The SO_TXTIME feature works in conjunction with the Earliest TxTime
First (ETF) qdisc. The ETF qdisc sorts packets from multiple sockets by
the earliest transmission time and sends them to the network controller.
It also enables offloading packet transmission to hardware in case the
NIC supports it, providing more time accuracy. For further information
about ETF qdisc, see tc-etf(8). The qdisc can be configured many ways,
in doc/aaf.txt we provide an example.

Below follows some implementation highlights:

The packet transmission time is configured through socket control
message interface so we now use sendmsg() to transmit AVTPDUs, instead
of sendto().

sendmsg() API requires a msghdr struct which is initialized during
device setup time. Strictly speaking, that struct is only required when
operating in playback mode but we initialize it always, no matter if
running in playback or capture mode. This makes hw_params() and
hw_free() callbacks implementation way more simpler, specially on
handling error cases.

[1] 1722-2016 - IEEE Standard for a Transport Protocol for Time-Sensitive
    Applications in Bridged Local Area Networks

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agoaaf: Tx multiple AVTPDUs per media clock tick
Andre Guedes [Sat, 8 Dec 2018 01:55:49 +0000 (17:55 -0800)]
aaf: Tx multiple AVTPDUs per media clock tick

In order to implement the transmission offload mechanism, we need to
change the way the plugin behaves so, instead of sending only one
AVTPDU, it sends several AVTPDUs at every media clock tick.

To achieve that, this patch changes the plugin so it consumes the audio
buffer in chunks of period size instead of in frames_per_pdu. The number
of AVTPDUs sent at every media clock tick is calculated by dividing the
period size by the number of frames per AVTPDU. To ensure that number is
not fractional, the plugin requires that the period size is multiple of
the plugin configuration 'frames_per_pdu'.

For the sake of consistency, the capture mode is also changed so the
plugin presents audio frames to the alsa-lib layer in chunks of period
size as well.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agoaaf: Refactor timeout routines
Andre Guedes [Sat, 8 Dec 2018 01:55:48 +0000 (17:55 -0800)]
aaf: Refactor timeout routines

The functions aaf_mclk_timeout_playback() and aaf_mclk_timeout_capture()
have some common code so this patch does a code refactoring by moving
the shared code into a new function called aaf_timer_timeout().

After the refactoring, aaf_mclk_timeout_playback() and aaf_mclk_timeout_
capture() ended up having no code related to timeout so they were
renamed to better represent what they really do (send frames and present
frames, respectively).

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agoaaf: Refactor AVTPDU reception routines
Andre Guedes [Sat, 8 Dec 2018 01:55:47 +0000 (17:55 -0800)]
aaf: Refactor AVTPDU reception routines

This patch does some code refactoring in the AVTPDU reception
routines in order to prepare the code to support the transmission
offload mechanism that will be added by upcoming patches. No
functionality is added or removed by this patch.

In summary, the function aaf_rx_pdu() is broken down into smaller, new
functions and some code is moved to is_pdu_valid(). Below follows more
details about the code refactoring.

The function aaf_rx_pdu() was renamed to aaf_socket_new_data() which
reads the socket and dispatches the AVTPDU in case the PCM device isn't
in DRAIN state. Function aaf_dispatch_pdu() simply reads the subtype
field from the AVTPDU and dispatches it according. For now, only AAF
PDUs are supported. Finally, the aaf_dispatch_pdu_aaf() handles AAF
AVTPDUs which means to check if the AVTPDU is valid, copies the PCM
samples from the payload to the audio buffer, and start the media clock
in case it hasn't been started already.

The function is_pdu_valid() is moved around to avoid forward
declaration. Code to validate the sequence number and presentation time
from the AVTPDU which used to be in aaf_rx_pdu() is moved into
is_pdu_valid().

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agoaaf: Refactor AVTPDU transmission routines
Andre Guedes [Sat, 8 Dec 2018 01:55:46 +0000 (17:55 -0800)]
aaf: Refactor AVTPDU transmission routines

This patch does some code refactoring in the AVTPDU transmission
routines in order to prepare the code to support the transmission
offload mechanism that will be added by upcoming patches. No
functionality is added or removed by this patch.

In summary, code from aaf_tx_pdu() is moved into aaf_mclk_timeout_
playback() and into a new function introduced by this patch called
aaf_tx_pdus(). Below follows more details about the code refactoring.

The function aaf_tx_pdu() is modified so it only takes care of setting
the payload, sequence number and presentation time from the AVTPDU, and
sending it to the kernel.

The new function aaf_tx_pdus() calculates the presentation time from
each AVTPDU and calls aaf_tx_pdu() multiple times, according to the pdu
count argument.

Finally, the function aaf_mclk_timeout_playback() now checks if there
are frames available to the "hardware" and takes care of moving the
hardware pointer forward.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agoaaf: Add presentation time tolerance
Andre Guedes [Sat, 8 Dec 2018 01:55:45 +0000 (17:55 -0800)]
aaf: Add presentation time tolerance

Different AVTP applications have different presentation time tolerance.
The current version of the plugin doesn't support any tolerance so this
patch extends the AAF plugin in order to enable the user to configure
that tolerance value.

The presentation time tolerance is specified in microseconds and it is
relevant only when the plugin is operating in capture mode.  For more
information see the 'Plugin Configuration' session in doc/aaf.txt

This patch also does some code refactoring and encapsulates all
presentation time validation code in the new is_ptime_valid() helper
function.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agodoc: Fix typo in AAF doc
Andre Guedes [Sat, 8 Dec 2018 01:55:44 +0000 (17:55 -0800)]
doc: Fix typo in AAF doc

This patch fixes a typo in aaf.txt documentation.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agoaaf: do not free twice aaf - snd_pcm_close() is called from snd_pcm_ioplug_delete()
Jaroslav Kysela [Thu, 25 Oct 2018 06:34:57 +0000 (08:34 +0200)]
aaf: do not free twice aaf - snd_pcm_close() is called from snd_pcm_ioplug_delete()

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoaaf: Add support for direct read/write transfers
Andre Guedes [Thu, 25 Oct 2018 01:11:16 +0000 (18:11 -0700)]
aaf: Add support for direct read/write transfers

This patch adds support for direct read/write transfers (i.e. mmap
access mode) to the AAF plugin.

In order to enable direct read/write transfers, the AAF plugin is
required to implement ioplug's pseudo mmap mode. In this mode, the audio
buffer management (e.g. areas allocation, clean up, and data copy) is
handled at upper layers, making the AAF plugin simpler. So this patch
removes all code related to audio buffer management as well as the
transfer() callback from the AAF plugin.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoaaf: Implement dump() ioplug callback
Andre Guedes [Thu, 25 Oct 2018 01:11:15 +0000 (18:11 -0700)]
aaf: Implement dump() ioplug callback

This patch introduces the aaf_dump() function which prints information
about both PCM and AVTP setup.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoaaf: Implement Capture mode support
Andre Guedes [Thu, 25 Oct 2018 01:11:14 +0000 (18:11 -0700)]
aaf: Implement Capture mode support

This patch implements the capture mode support from the AAF plugin.
Simply put, this mode works as follows: AVTPDUs are received from the
network, the PCM samples are retrieved and presented to the alsa-lib
layer at the presentation time. In summary, the capture mode implements
a typical AVTP Listener.

Once the AAF device is put in running state, packet reception is
started. Every time an AVTPDU is received, the plugin checks if it is
valid (according to the stream configuration provided by the user) and
copies the PCM samples to the audio buffer. Note that at this moment,
the samples are not presented to the alsa-lib layer yet (i.e. hw_ptr is
not incremented).

The media clock starts at the presentation time from the first AVTPDU.
At every tick from the media clock, PCM samples are presented to the
alsa-lib layer.

Below follows some secondary discussion about this patch:

The functions aaf_mclk_start_playback() and aaf_mclk_start_capture()
have some common code. This patch does some code refactoring so the
common code is put in a new function (aaf_mclk_start) which is called
by both aaf_mclk_start_playback() and aaf_mclk_start_capture().

Also, the helper function aaf_inc_hw_ptr() is refactored so it can be
used to increment both aaf->hw_ptr and aaf->hw_virt_ptr.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoaaf: Prepare for Capture mode support
Andre Guedes [Thu, 25 Oct 2018 01:11:13 +0000 (18:11 -0700)]
aaf: Prepare for Capture mode support

The plugin code assumes only Playback mode is supported. This patch
prepares the code to support both Playback and Capture mode. Capture
mode support is implemented by a follow-up patch.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoaaf: Implement Playback mode support
Andre Guedes [Thu, 25 Oct 2018 01:11:12 +0000 (18:11 -0700)]
aaf: Implement Playback mode support

This patch implements the playback mode support from the AAF plugin.
Simply put, this mode works as follows: PCM samples provided by alsa-lib
layer are encapsulated into AVTPDUs and transmitted through the network.
In summary, the playback mode implements a typical AVTP Talker.

When the AAF device is put in running state, its media clock is started.
At every tick from the media clock, audio frames are consumed from the
audio buffer, encapsulated into an AVTPDU, and transmitted to the
network. The presentation time from each AVTPDU is calculated taking in
consideration the maximum transit time and time uncertainty values
configured by the user.

Below follows some discussion about implementation details:

AVTP protocol doesn't support all formats and rates available in ALSA so
the plugin sets some constraints to ensure only supported configurations
are used (see aaf_set_hw_constraint function).

The plugin implements a media clock which is the source from AVTP
timestamps. The AVTP timestamp is based on PTP time which uses
International Atomic Time (TAI) coordinate system. The media clock is
implemented through a periodic timer using timerfd infrastructure so the
plugin requires that system clock and PTP clock are synchronized
(instructions on how to sync these clocks are provided in doc/aaf.txt).
CLOCK_TAI clockid isn't currently supported by timerfd so the timer fd
is created using CLOCK_REALTIME and the start time is converted from TAI
to UTC.

Even though only one file descriptor is used to implement the playback
mode, this patch doesn't leverage ioplug->poll_fd but defines poll
callbacks instead. The reason is these callbacks will be required to
support capture mode (to be implemented by upcoming patch).

The TSN data plane interface is the AF_PACKET socket family so the
plugin uses an AF_PACKET socket to send/receive AVTPDUs. Linux requires
CAP_NET_RAW capability in order to open an AF_PACKET socket so the
application that instantiates the plugin must have it. For further info
about AF_PACKET socket family see packet(7).

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoaaf: Load configuration parameters
Andre Guedes [Thu, 25 Oct 2018 01:11:11 +0000 (18:11 -0700)]
aaf: Load configuration parameters

This patch implements the infrastructure to load the plugin
configuration from ALSA configuration file. The configuration
is loaded in open() callback.

All configuration parameters are described in details in doc/aaf.txt
file.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoaaf: Introduce plugin skeleton
Andre Guedes [Thu, 25 Oct 2018 01:11:10 +0000 (18:11 -0700)]
aaf: Introduce plugin skeleton

The patch introduces the skeleton code from the AAF plugin as well as
the buildsystem bits in order to get the plugin built. Following the
approach from other plugins, the AAF plugin is only built if its
dependency (libavtp) is detected by configure.

Follow-up patches implement support for both playback and capture modes.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoRevert "oss: Fix leaks when oss_hw_constraint() fails"
Jaroslav Kysela [Wed, 24 Oct 2018 10:27:16 +0000 (12:27 +0200)]
Revert "oss: Fix leaks when oss_hw_constraint() fails"

This reverts commit b8bcd458b79146547fc6dae1645832695545da44.

snd_pcm_ioplug_delete() already calls snd_pcm_close()!

6 years agoRevert "usb_stream: Fix leaks when us_set_hw_constraint() fails"
Jaroslav Kysela [Wed, 24 Oct 2018 10:23:11 +0000 (12:23 +0200)]
Revert "usb_stream: Fix leaks when us_set_hw_constraint() fails"

This reverts commit 6b996865126dd559ef186002e45dc6e1594291e7.

snd_pcm_ioplug_delete() already calls snd_pcm_close()!

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoRevert "jack: Fix leaks when jack_set_hw_constraint() fails"
Jaroslav Kysela [Wed, 24 Oct 2018 10:18:42 +0000 (12:18 +0200)]
Revert "jack: Fix leaks when jack_set_hw_constraint() fails"

This reverts commit f4746667a4a2490f17c2a82b6f421bc3c9bd6de8.

snd_pcm_ioplug_delete() already calls snd_pcm_close()!

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoa52_close: set slave to NULL to avoid double pcm free in open fcn
Jaroslav Kysela [Tue, 23 Oct 2018 07:32:46 +0000 (09:32 +0200)]
a52_close: set slave to NULL to avoid double pcm free in open fcn

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agopcm_usb_stream: fix signess issues
Jaroslav Kysela [Tue, 23 Oct 2018 06:49:23 +0000 (08:49 +0200)]
pcm_usb_stream: fix signess issues

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agopcm_usb_stream: remove unused parameter in snd_pcm_us_read()
Jaroslav Kysela [Tue, 23 Oct 2018 06:47:16 +0000 (08:47 +0200)]
pcm_usb_stream: remove unused parameter in snd_pcm_us_read()

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agopcm_usb_stream: fix another leak in snd_pcm_us_open()
Jaroslav Kysela [Tue, 23 Oct 2018 06:39:16 +0000 (08:39 +0200)]
pcm_usb_stream: fix another leak in snd_pcm_us_open()

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agoRelease v1.1.7 v1.1.7
Jaroslav Kysela [Tue, 16 Oct 2018 12:00:22 +0000 (14:00 +0200)]
Release v1.1.7

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agodoc: fix makefile, the files should be included to the distribution package unconditi...
Jaroslav Kysela [Tue, 16 Oct 2018 11:54:22 +0000 (13:54 +0200)]
doc: fix makefile, the files should be included to the distribution package unconditionally

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
6 years agousb_stream: Fix leaks when us_set_hw_constraint() fails
Andre Guedes [Fri, 28 Sep 2018 21:27:27 +0000 (14:27 -0700)]
usb_stream: Fix leaks when us_set_hw_constraint() fails

If us_set_hw_constraint() returns error, we leak the 'us' object and all
the resources referenced by it. This patch fixes the issue by calling
us_free() before returning.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agooss: Fix leaks when oss_hw_constraint() fails
Andre Guedes [Fri, 28 Sep 2018 21:27:26 +0000 (14:27 -0700)]
oss: Fix leaks when oss_hw_constraint() fails

If oss_hw_constraint() returns error, we leak 'oss' object and all the
resources referenced by it. This patch fixes the issue by jumping to
'error' label where the proper clean up is already done.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agojack: Fix leaks when jack_set_hw_constraint() fails
Andre Guedes [Fri, 28 Sep 2018 21:27:25 +0000 (14:27 -0700)]
jack: Fix leaks when jack_set_hw_constraint() fails

If jack_set_hw_constraint() returns error, we leak the 'jack' object and
all the resources referenced by it. This patch fixes the issue by
calling snd_pcm_jack_free() before returning.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agoa52: Fix leaks when a52_set_hw_constraint() fails
Andre Guedes [Fri, 28 Sep 2018 21:27:24 +0000 (14:27 -0700)]
a52: Fix leaks when a52_set_hw_constraint() fails

If a52_set_hw_constraint() returns error, we leak 'rec' and
'rec->slave'. This patch fixes the issue by jumping to 'error' label
where the proper clean up is already done.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 years agoFix typo in configure.ac (--disable-libav)
Peter Levine [Tue, 25 Sep 2018 05:22:40 +0000 (01:22 -0400)]
Fix typo in configure.ac (--disable-libav)

Signed-off-by: Peter Levine <plevine457@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agojack: Only allow ALSA periods multiple of JACKd period
Laxmi Devi [Thu, 19 Jul 2018 07:50:09 +0000 (09:50 +0200)]
jack: Only allow ALSA periods multiple of JACKd period

There is a higher Xrun probability whenever the ALSA period is not a
multiple of the JACKd period and the ALSA buffer is only twice the period.
Allowing ALSA buffers of min. 3x period is not a good solution because this
would increase the latency.

As an example in case of ALSA is using a period of 11 frames and JACK a
period of 12 frames and a buffer of 22 frames (2x ALSA period) is used:
- The buffer is filled and contains 22 frames
- JACK is reading 12 frames. Buffer is only containing 10 frames
- Now, ALSA has to be scheduled exactly after the last JACK read and
  before the next read. Otherwise we will get an Xrun
In case of ALSA is using a multiple period of JACK, JACK can always read
2 periods before an Xrun if the buffer was full.

In case of ALSA is using a period of 12 frames and JACK a period of 11
frames and a buffer of 24 frames (2x ALSA period) is used:
- The buffer is filled and contains 24 frames
- JACK is reading 11 frames. Buffer is now containing 13 frames. But ALSA
  can still not write to the buffer
- JACK reads 11 additional frames. Buffer contains 2 frames
- Now, ALSA has to be scheduled exactly after the last JACK read and
  before the next read. Otherwise we will get an Xrun
In case of ALSA is using a multiple period of JACK, ALSA can always write
to the buffer as long as the buffer is filled with less or equal of half
of buffer.

Therefore this patch enforces an ALSA period which is always a multiple
of the JACKd period.

Signed-off-by: Laxmi Devi <ldevi@de.adit-jv.com>
Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agoconfigure: Require alsa-lib 1.1.6 and newer
Takashi Iwai [Tue, 3 Jul 2018 15:17:00 +0000 (17:17 +0200)]
configure: Require alsa-lib 1.1.6 and newer

JACK plugin requires the recently added API function.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agojack: Allow build with older alsa-lib
Takashi Iwai [Tue, 3 Jul 2018 15:13:00 +0000 (17:13 +0200)]
jack: Allow build with older alsa-lib

The new API snd_pcm_ioplug_avail() doesn't appear prior to alsa-lib
1.1.7.  Add an own code for allowing the build with alsa-lib 1.1.6.

It has a very slight overhead than the original snd_pcm_ioplug_avail()
but should be OK as a workaround.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agojack: Update poll_fd also in draining state
Timo Wischer [Tue, 3 Jul 2018 13:59:23 +0000 (15:59 +0200)]
jack: Update poll_fd also in draining state

... to support snd_pcm_drain for the JACK IO plugin.

With this changes there will be an poll_fd event in DRAINING state even if
the min_avail was not yet reached. Otherwise the application would never
recognize that all samples were processed by JACK.
In addition the JACK real-time thread is also processing when in DRAINING
state and not only when in RUNNING or PREPARE state.

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agojack: Avoid call to snd_pcm_avail_update() from JACK thread
Timo Wischer [Tue, 3 Jul 2018 13:59:22 +0000 (15:59 +0200)]
jack: Avoid call to snd_pcm_avail_update() from JACK thread

snd_pcm_avail_update() can call snd_pcm_jack_stop() but
snd_pcm_jack_stop() should not be called by the JACK thread.
It should only be called by the thread how has called
snd_pcm_jack_start().

In addition the execution of snd_pcm_avail_update() can take a while.
Therefore it should not be called by the JACK thread to not block this
thread.

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agousb_stream: Add explicit -lpthread to *_LIBADD
Takashi Iwai [Tue, 22 May 2018 12:15:21 +0000 (14:15 +0200)]
usb_stream: Add explicit -lpthread to *_LIBADD

The pthread library has to be linked for this module.  In some tool
chains, it results in a build error.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agoarcam-av: Add explicit -lpthread to *_LIBADD
Takashi Iwai [Tue, 22 May 2018 12:13:53 +0000 (14:13 +0200)]
arcam-av: Add explicit -lpthread to *_LIBADD

The pthread library has to be linked for this module.  In some tool
chains, it results in a build error.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agooss/Makefile.am: fix typo
Jaroslav Kysela [Mon, 16 Apr 2018 16:14:18 +0000 (18:14 +0200)]
oss/Makefile.am: fix typo

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agoconfigure: change --with-alsaaddondir to --with-alsagconfdir and --with-alsalconfdir
Jaroslav Kysela [Mon, 16 Apr 2018 15:49:36 +0000 (17:49 +0200)]
configure: change --with-alsaaddondir to --with-alsagconfdir and --with-alsalconfdir

The local add-on configuration directory (/etc/alsa/conf.d) contains
links to the global configuration directory (/usr/share/alsa/alsa.conf.d) now.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agoMove rate-lavc to rate-lav subdirectory and update to use libavresample
Jaroslav Kysela [Mon, 16 Apr 2018 14:24:29 +0000 (16:24 +0200)]
Move rate-lavc to rate-lav subdirectory and update to use libavresample

- --disable-avcodec renamed to --disable-libav
- --avcodec-includedir renamed to --libav-includedir
- --avcodec-libdir renamed to --libav-libdir
- --disable-lavcrate renamed to --disable-lavrate

The .c changes are from Anton Khirnov. The rest is from Jaroslav Kysela.

From: Anton Khirnov
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agoconfig/Makefile: make everything modular
Jaroslav Kysela [Fri, 13 Apr 2018 11:37:36 +0000 (13:37 +0200)]
config/Makefile: make everything modular

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agoconfigure: add --with-alsaaddondir, add default config files for plugins
Jaroslav Kysela [Wed, 4 Apr 2018 17:57:56 +0000 (19:57 +0200)]
configure: add --with-alsaaddondir, add default config files for plugins

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agosamplerate: fix unused variable warning
Jaroslav Kysela [Thu, 5 Apr 2018 07:23:09 +0000 (09:23 +0200)]
samplerate: fix unused variable warning

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agoRelease v1.1.6 v1.1.6
Jaroslav Kysela [Tue, 3 Apr 2018 07:01:38 +0000 (09:01 +0200)]
Release v1.1.6

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agojack: Use correct parameter order for snd_pcm_areas_silence()
Timo Wischer [Wed, 21 Mar 2018 11:42:32 +0000 (12:42 +0100)]
jack: Use correct parameter order for snd_pcm_areas_silence()

Without this fix it will sometimes fail with a segmentation fault.

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agojack: Report Xruns to user application
Timo Wischer [Fri, 16 Mar 2018 14:23:32 +0000 (15:23 +0100)]
jack: Report Xruns to user application

Only increasing the hw_ptr is not sufficient
because it will not be evaluated by the ALSA library
to detect an Xrun.

In addition there is a raise where an Xrun detected by the JACK thread
could not be detected in the ALSA thread.
- In playback use case
- The hw_ptr will be increased by the JACK thread
  (hw_ptr > appl_ptr => Xrun)
- But the ALSA thread increases the appl_ptr before evaluating the
hw_ptr
- Therefore the hw_ptr < appl_ptr again
- ALSA will not detect the Xrun which was already detected by the
JACK thread

Therefore an additional variable is required to report an Xrun from the
JACK thread to ALSA.

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agojack: Do not Xrun the ALSA buffer
Timo Wischer [Tue, 13 Mar 2018 08:34:44 +0000 (09:34 +0100)]
jack: Do not Xrun the ALSA buffer

when the JACK thread is requesting too many audio frames

Playback:
Without this commit the ALSA audio buffer will be played with endless
repeats as long as the user application has not provided new audio data.
Therefore this garbage will be played as long as the user application has
not called snd_pcm_stop() after an Xrun. With this fix the rest of the
JACK buffer will be filled with silence.

Capture:
Without this commit the audio data in the ALSA buffer would be
overwritten. With this commit the new data from the JACK buffer will not
be copied. Therefore the existing data in the ALSA buffer will not be
overwritten.

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agojack: Use boundary as hw_ptr wrap around
Timo Wischer [Fri, 23 Feb 2018 14:18:08 +0000 (15:18 +0100)]
jack: Use boundary as hw_ptr wrap around

instead of using buffer_size as wrap around.

This is required to detect Xruns.

It is also required to allow the JACK thread
to processes the whole ALSA audio buffer at once
without calling snd_pcm_avail_update() in between.

For example when the hw_ptr will be updated with
hw_ptr += buffer_size
and it is using the buffer_size as wrap around
hw_ptr %= buffer_size
would result in the same value as before the add operation.

Due to that the user application would not recognize
that the complete audio buffer was copied.

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 years agojack: Write only valid values to the internal hw_ptr
Timo Wischer [Mon, 22 Jan 2018 08:37:20 +0000 (09:37 +0100)]
jack: Write only valid values to the internal hw_ptr

Otherwise the ALSA thread could for example read a hw_ptr >
buffer_size

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agoChange FSF address (Franklin Street)
Jaroslav Kysela [Tue, 14 Nov 2017 13:40:56 +0000 (14:40 +0100)]
Change FSF address (Franklin Street)

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
7 years agoRelease v1.1.5 v1.1.5
Jaroslav Kysela [Tue, 14 Nov 2017 07:52:10 +0000 (08:52 +0100)]
Release v1.1.5

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
8 years agopulse: prevent double-free when pulse_hw_constraint returns error
Kui Wang [Thu, 13 Jul 2017 19:33:05 +0000 (19:33 +0000)]
pulse: prevent double-free when pulse_hw_constraint returns error

When pulse_hw_constraint returns error, snd_pcm_ioplug_delete() is called.
It will then call pulse_close() where "snd_pcm_pulse_t *pcm" will be free.
Then if goto the "error" label, the "snd_pcm_pulse_t *pcm" will be double-free.

To prevent this, just jump over the code which might cause double-free.

Signed-off-by: Kui Wang <wangkuisuper@hotmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoRelease v1.1.4 v1.1.4
Jaroslav Kysela [Fri, 12 May 2017 08:01:45 +0000 (10:01 +0200)]
Release v1.1.4

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
8 years agoconfigure: Fix detection of avcodec.h
Takashi Iwai [Wed, 3 May 2017 10:50:03 +0000 (12:50 +0200)]
configure: Fix detection of avcodec.h

Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoconfigure: enhancing configuration support for alsa plugins
Mounesh Sutar [Fri, 17 Feb 2017 07:24:19 +0000 (12:54 +0530)]
configure: enhancing configuration support for alsa plugins

Following plugins are made configurable in alsa-plugins:
* oss
* mix
* usbstream
* arcamav
* speexdsp

Signed-off-by: Mikhail Durnev <mikhail_durnev@mentor.com>
Signed-off-by: Mounesh Sutar <mounesh_sutar@mentor.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
9 years agoRelease v1.1.1 v1.1.1
Jaroslav Kysela [Thu, 31 Mar 2016 13:11:29 +0000 (15:11 +0200)]
Release v1.1.1

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
9 years agoa52: Fix usage of obsoleted avcodec_*_frame() functions
Daniel Kirchner [Wed, 9 Mar 2016 08:17:09 +0000 (09:17 +0100)]
a52: Fix usage of obsoleted avcodec_*_frame() functions

pcm_a52.c uses avcodec_alloc_frame and avcodec_free_frame that have
been replaced by av_frame_alloc and av_frame_free in recent versions
of libavcodec.  The following patch should fix this while remaining
backwards compatible.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
9 years agoa52: Make compatible with ffmpeg 3.0
Anatol Pomozov [Tue, 16 Feb 2016 01:49:22 +0000 (17:49 -0800)]
a52: Make compatible with ffmpeg 3.0

audioconvert.h has been deprecated a while ago and got removed in
ffmpeg 3.0 (commit 2d40968dd3ff17b12f7).

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
9 years agopph: include config.h from rate_speexrate.c
Tanu Kaskinen [Wed, 27 Jan 2016 11:45:51 +0000 (13:45 +0200)]
pph: include config.h from rate_speexrate.c

Fixes compilation against libspeexdsp 1.2rc3.

rate_speexrate.c includes speex_resampler.h, which depends on config.h
by referencing the HAVE_SPEEX_SPEEXDSP_TYPES_H macro. AFAIK it's not
a good idea to include config.h from headers (I don't know/remember
why, though), which is why I include config.h from rate_speexrate.c
instead of speex_resampler.h.

Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
9 years agoa52: fix reported input channel order
Tom Yan [Tue, 12 Jan 2016 07:57:39 +0000 (15:57 +0800)]
a52: fix reported input channel order

a52 plugin expects the input to be in ALSA order and remaps it to general order when encoding. However it reports that the input it takes should be in general order.

This fix should make programs (e.g. mpv) that is aware of channel layout reported by ALSA remap sources appropriately before sending when necessary.

It should not cause any regression to programs (e.g. mplayer) that does not check the reported channel layout (hence not affected by the issue) and remaps sources anyway.

Signed-off-by: Tom Yan <tom.ty89@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
9 years agospeex: Add missing include config.h
Takashi Iwai [Mon, 9 Nov 2015 10:53:22 +0000 (11:53 +0100)]
speex: Add missing include config.h

Signed-off-by: Takashi Iwai <tiwai@suse.de>
9 years agoRelease v1.1.0 v1.1.0
Jaroslav Kysela [Tue, 27 Oct 2015 13:34:06 +0000 (14:34 +0100)]
Release v1.1.0

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
10 years agojack: Fixing a small memory leak
Valentin Corfu [Tue, 11 Aug 2015 06:37:14 +0000 (09:37 +0300)]
jack: Fixing a small memory leak

A small memory leak can be observed when using alsa-plugins (jack).
Check the following valgrind log:
...
==1034== 8 bytes in 1 blocks are definitely lost in loss record 7 of 108
==1034==    at 0x4027E5A: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==1034==    by 0x4035102: snd_pcm_jack_prepare (in /usr/lib/alsa-lib/libasound_module_pcm_jack.so)
==1034==    by 0x40D07AB: snd_pcm_ioplug_prepare (pcm_ioplug.c:145)
==1034==    by 0x4084961: snd_pcm_prepare (pcm.c:1052)
==1034==    by 0x409DDB4: snd_pcm_plugin_prepare (pcm_plugin.c:162)
==1034==    by 0x4084961: snd_pcm_prepare (pcm.c:1052)
==1034==    by 0x409DDB4: snd_pcm_plugin_prepare (pcm_plugin.c:162)
==1034==    by 0x4084961: snd_pcm_prepare (pcm.c:1052)
==1034==    by 0x4084A1D: snd_pcm_hw_params (pcm.c:838)
==1034==    by 0x4090013: snd_pcm_set_params (pcm.c:8053)
==1034==    by 0x80486EB: main (in /root/pcm_min_ok)
...
==1034== LEAK SUMMARY:
==1034==    definitely lost: 8 bytes in 1 blocks
==1034==    indirectly lost: 0 bytes in 0 blocks
==1034==      possibly lost: 31,311 bytes in 1,630 blocks
==1034==    still reachable: 5,619 bytes in 24 blocks
==1034==         suppressed: 0 bytes in 0 blocks
...

Signed-off-by: Valentin Corfu <corfuvalentin@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agopph: Fix build with older speex
Takashi Iwai [Thu, 9 Jul 2015 14:08:59 +0000 (16:08 +0200)]
pph: Fix build with older speex

The previous commit fixed the build of the recent speexdsp, but it
also broke the build with the old library.  Actually the only needed
change is the inclusion of speex/speex_types.h instead of
speex/speexdsp_types.h, so it can be easily worked around via the
check in configure script.

Along with this change, make the version check back to 1.2 from
1.2rc2, as 1.2rc1 works fine now again, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agopph: include speexdsp_types.h, not speex_types.h
Tanu Kaskinen [Thu, 9 Jul 2015 09:43:29 +0000 (12:43 +0300)]
pph: include speexdsp_types.h, not speex_types.h

Speexdsp was separated from speex in 1.2rc2. speex_types.h is not
shipped by speexdsp, so alsa-plugins shouldn't use that file. speexdsp
has speexdsp_types.h, which has the same contents as speex_types.h.

speexdsp_types.h is a new file introduced in 1.2rc2, so this change
bumps the minimum supported speexdsp version. The version check in
configure.ac will actually break if speexdsp 1.2 ever gets released,
because pkg-config thinks that "1.2" < "1.2rc2", but I think it's
useful to fail if the installed speexdsp version is 1.2rc1 (which I
believe is very common on current distributions). If a non-rc version
of speexdsp will ever get released, I hope version number 1.2 will be
skipped for this reason. (A non-rc version seems unlikely, since
1.2rc1 was released years ago, so it's pretty likely that the project
is stuck on so called "release candidates" forever...)

Signed-off-by: Tanu Kaskinen <tanu.kaskinen@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoarcam-av: Include sys/select.h for fd_set definition
Khem Raj [Fri, 29 May 2015 22:38:49 +0000 (15:38 -0700)]
arcam-av: Include sys/select.h for fd_set definition

fixes build errors on non-glibc based systems

arcam-av/arcam_av.c:389:2: error: unknown type name 'fd_set'

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agopulse: Add 24 bit data formats to Pulse plugin.
Alex Wiggins [Tue, 12 May 2015 00:09:34 +0000 (01:09 +0100)]
pulse: Add 24 bit data formats to Pulse plugin.

Signed-off-by: Alex Wiggins <alex.d.wiggins@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoa52: Fix ioplug version ifdef checks
Takashi Iwai [Wed, 18 Mar 2015 16:08:57 +0000 (17:08 +0100)]
a52: Fix ioplug version ifdef checks

SND_PCM_IOPLUG_VERSION must be checked with 0x10002, not 0x102.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agomix: Fix extplug version ifdef checks
Takashi Iwai [Wed, 18 Mar 2015 16:05:16 +0000 (17:05 +0100)]
mix: Fix extplug version ifdef checks

SND_PCM_EXTPLUG_VERSION must be checked with 0x10002, not 0x102.

Reported-by: Ethan Grammatikidis <eekee57@fastmail.fm>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agorate: Allow LGPL for libsamplerate commercial licensee
Takashi Iwai [Thu, 12 Mar 2015 08:13:44 +0000 (09:13 +0100)]
rate: Allow LGPL for libsamplerate commercial licensee

alsa-plugins-rate is tagged with GPL just for following the license of
libsamplerate.  However, libsamplerate provides a commercial license
to allow it used with less restrictions.  In that case, we also don't
have to stick with GPL.  Instead, the code follows LGPL like other
plugin codes in this package.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoRelease v1.0.29 v1.0.29
Jaroslav Kysela [Thu, 26 Feb 2015 12:38:07 +0000 (13:38 +0100)]
Release v1.0.29

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
10 years agoa52: Ignore start request if we're already running
David Henningsson [Wed, 12 Nov 2014 14:55:43 +0000 (15:55 +0100)]
a52: Ignore start request if we're already running

When trying to start a PCM that's already running, the result is EBADFD.
We might have implicitly started the buffer by filling it up,
so just ignore this request if we're already running.

Reported-by: Chow Loong Jin <hyperair@ubuntu.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agojack: Restore PID to jack client name when not specified explicitly
Branan Purvine-Riley [Fri, 8 Aug 2014 21:31:06 +0000 (14:31 -0700)]
jack: Restore PID to jack client name when not specified explicitly

Commit 14190cd8 added a facility to explicitly name Jack clients with
a 'name' option, but did so in a way that was not fully
backwards-compatible with older versions of the alsa-plugins. There
were two issues:

1. Re-using the magical "name" variable, which comes preloaded with
the name of the PCM

2. The code assumed snd_config_get_string sets a variable to NULL if
the config entry does not exist. Instead, this function leaves the
variable unchanged.

The result of these two errors meant that the PCM name would be
treated as if it were a user-defined name, and the old code which
embedded the PID would never be run

This code uses a completely new variable to store the explicitly-set
client name, so that the two code paths no longer collide.

[fixed trivial coding style issues by tiwai]

Signed-off-by: Branan Purvine-Riley <branan@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agoRelease v1.0.28 v1.0.28
Jaroslav Kysela [Thu, 12 Jun 2014 09:32:45 +0000 (11:32 +0200)]
Release v1.0.28

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
11 years agoModernize configure.ac
Jaroslav Kysela [Thu, 12 Jun 2014 09:32:35 +0000 (11:32 +0200)]
Modernize configure.ac

11 years agojack: fix polling and recovering
Sergey [Mon, 26 May 2014 03:54:05 +0000 (07:54 +0400)]
jack: fix polling and recovering

This patch fixes polling in alsa-to-jack plugin.
It makes poll()+_poll_revents() return correct values
when there's something to read/write.
It also makes jack pcm survive snd_pcm_recover(-EPIPE).

Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agojack: Use jack_client_open instead of deprecated jack_client_new.
Maarten Baert [Tue, 18 Mar 2014 16:55:14 +0000 (17:55 +0100)]
jack: Use jack_client_open instead of deprecated jack_client_new.

Signed-off-by: Maarten Baert <maarten-baert@hotmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agojack: Allow to specify a client name as parameters
Valentin Corfu [Tue, 11 Feb 2014 09:06:36 +0000 (04:06 -0500)]
jack: Allow to specify a client name as parameters

 The current jack client name contains the process id of the application
providing the audio samples. This leads to unpredictable jack client
names which makes handling of the connections by a controlling
application very hard.
 This modification now, allows to specify a client name as parameters
in the configuration file. The implementation is backward
compatible and simply adds a new configuration option to the plugin.

[reformatted and small refactoring by tiwai]

Signed-off-by: Valentin Corfu <valentinx.corfu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agoa52: switch to AV_CODEC_ID identifiers
Anton Khirnov [Thu, 9 Jan 2014 20:14:17 +0000 (21:14 +0100)]
a52: switch to AV_CODEC_ID identifiers

Fixes build with latest libavcodec versions.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agoa52: Propagate errors from hw
David Henningsson [Wed, 1 Jan 2014 12:17:38 +0000 (13:17 +0100)]
a52: Propagate errors from hw

Several callbacks returned 0 even though the hw was failing, leading
applications to believe everything was fine when it wasn't.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agoa52: Add chmap support
Takashi Iwai [Wed, 9 Oct 2013 15:25:50 +0000 (17:25 +0200)]
a52: Add chmap support

Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agoa52: Fix build error with the recent version
Takashi Iwai [Wed, 9 Oct 2013 15:24:35 +0000 (17:24 +0200)]
a52: Fix build error with the recent version

The version check for USE_AVCODEC_FRAME wasn't done correctly, and it
failed to build with version 54.x or later.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agoupmix: Add chmap support
Takashi Iwai [Wed, 9 Oct 2013 14:59:20 +0000 (16:59 +0200)]
upmix: Add chmap support

Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 years agovdownmix: Add chmap support
Takashi Iwai [Wed, 9 Oct 2013 14:28:47 +0000 (16:28 +0200)]
vdownmix: Add chmap support

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoAdd AM_MAINTAINER_MODE([enable]) to configure.in.
Jordi Mallach [Wed, 15 May 2013 17:11:48 +0000 (19:11 +0200)]
Add AM_MAINTAINER_MODE([enable]) to configure.in.

Signed-off-by: Jordi Mallach <jordi@debian.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoCheck for and include libavutil.h to avoid unresolved symbols.
Jordi Mallach [Wed, 15 May 2013 17:11:47 +0000 (19:11 +0200)]
Check for and include libavutil.h to avoid unresolved symbols.

The a52 plugin uses av_free(), but does not check for libavutil
availability. Patch configure.in to check for the module, and include
libavutil.h.

Signed-off-by: Jordi Mallach <jordi@debian.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoRelease v1.0.27 v1.0.27
Jaroslav Kysela [Thu, 11 Apr 2013 11:43:08 +0000 (13:43 +0200)]
Release v1.0.27

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
12 years agopulse: pulse_pcm_poll_revents should return 0 on success
Sander Jansen [Tue, 26 Feb 2013 04:24:13 +0000 (22:24 -0600)]
pulse: pulse_pcm_poll_revents should return 0 on success

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoa52: Fix build errors
Takashi Iwai [Fri, 30 Nov 2012 16:45:31 +0000 (17:45 +0100)]
a52: Fix build errors

I merged somehow a half-baked patch mistakenly.  Fixed now.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoa52: Add the support of recent libavcodec / libavutil
Takashi Iwai [Fri, 30 Nov 2012 16:15:44 +0000 (17:15 +0100)]
a52: Add the support of recent libavcodec / libavutil

The recent avcodec requires the planar support, which is essentially
non-interleaved formats.  We need to limit the accepted access types
depending on it.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agopcm_pulse: set prebuf parameter according to software parameters
Rémi Denis-Courmont [Sun, 18 Nov 2012 10:01:49 +0000 (12:01 +0200)]
pcm_pulse: set prebuf parameter according to software parameters

The current default value for prebuf is very high, almost the full
virtual ALSA buffer. This breaks some application especially where
low latency is involved.

This patch makes pcm_pulse implement the sw_params callback and get
the prebuf value from the ALSA software parameters. Thus the
trigger latency is much more like what an ALSA application should
expect from an ALSA PCM device.

Acked-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 years agoRelease v1.0.26 v1.0.26
Jaroslav Kysela [Thu, 6 Sep 2012 07:52:58 +0000 (09:52 +0200)]
Release v1.0.26

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
13 years agopulse: Support 24-bit formats
Andrew Eikum [Mon, 20 Aug 2012 09:28:14 +0000 (11:28 +0200)]
pulse: Support 24-bit formats

These formats were introduced in PulseAudio 0.9.15. There aren't any
new formats supported since then, so this also brings the PulseAudio
plugin in sync with current PulseAudio.

Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 years agousb_stream: Fix build with glibc 2.16
Takashi Iwai [Tue, 31 Jul 2012 09:18:54 +0000 (11:18 +0200)]
usb_stream: Fix build with glibc 2.16

_GNU_SOURCE needs to be defined at first.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 years agoRelease v1.0.25 v1.0.25
Jaroslav Kysela [Wed, 25 Jan 2012 07:57:07 +0000 (08:57 +0100)]
Release v1.0.25

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
13 years agoAdded missing configuration files for the pulse plugin
Jaroslav Kysela [Mon, 23 Jan 2012 15:46:48 +0000 (16:46 +0100)]
Added missing configuration files for the pulse plugin

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
13 years agojack: Fix revents for playback
Fons Adriaensen [Mon, 9 Jan 2012 17:18:10 +0000 (18:18 +0100)]
jack: Fix revents for playback

The following patch will make snd_pcm_poll_descriptors_revents()
return the correct value when used on a jack plugin device.
The current version returns POLLIN regardless of capture or
playback.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 years agoSet CLOEXEC flag for pipes in PulseAudio plugins
Chris Rankin [Tue, 27 Sep 2011 07:44:15 +0000 (09:44 +0200)]
Set CLOEXEC flag for pipes in PulseAudio plugins

I have noticed that Alsa / PulseAudio are leaking a couple of pipes after a
fork/exec, and have traced the leak to the following two plugins:

libasound_module_ctl_pulse.so
libasound_module_pcm_pulse.so

This is with Fedora 15. I have attached a patch for the problem.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 years agopulse: Install a PulseAudio config snippet into alsa.conf.d
Colin Guthrie [Fri, 16 Sep 2011 09:35:17 +0000 (10:35 +0100)]
pulse: Install a PulseAudio config snippet into alsa.conf.d

v2: Assing priorities to the config snippets.

Signed-off-by: Colin Guthrie <colin@mageia.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
14 years agopulse - Define a dummy PA_CHECK_VERSION() when not available
Takashi Iwai [Fri, 26 Aug 2011 07:43:11 +0000 (09:43 +0200)]
pulse - Define a dummy PA_CHECK_VERSION() when not available

An old version of PA doesn't define this macro, and gives a build error.

Signed-off-by: Takashi Iwai <tiwai@suse.de>