lp:alsa-plugins

Created by Jelmer Vernooij on 2010-01-27 and last modified on 2019-01-29
Get this branch:
bzr branch lp:alsa-plugins

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
VCS imports
Project:
alsa-plugins
Status:
Development

Import details

Import Status: Reviewed

This branch is an import of the HEAD branch of the Git repository at git://git.alsa-project.org/alsa-plugins.git.

The next import is scheduled to run in 3 hours.

Last successful import was 2 hours ago.

Import started 2 hours ago on alnitak and finished 2 hours ago taking 15 seconds — see the log
Import started 8 hours ago on izar and finished 8 hours ago taking 25 seconds — see the log
Import started 14 hours ago on alnitak and finished 14 hours ago taking 20 seconds — see the log
Import started 20 hours ago on alnitak and finished 20 hours ago taking 15 seconds — see the log
Import started on 2019-03-19 on izar and finished on 2019-03-19 taking 20 seconds — see the log
Import started on 2019-03-19 on alnitak and finished on 2019-03-19 taking 25 seconds — see the log
Import started on 2019-03-19 on alnitak and finished on 2019-03-19 taking 20 seconds — see the log
Import started on 2019-03-18 on izar and finished on 2019-03-18 taking 20 seconds — see the log
Import started on 2019-03-18 on alnitak and finished on 2019-03-18 taking 15 seconds — see the log
Import started on 2019-03-18 on izar and finished on 2019-03-18 taking 15 seconds — see the log

Recent revisions

341. By Timo Wischer <email address hidden> on 2019-01-29

jack: Support to connect multiple JACK ports with same ALSA channel

The following example will connect ALSA channel 0 to JACK port
"system:playback_1" and "system:playback_3" and ALSA channel 1 to JACK
port "system:playback_2" and "system:playback_4":

pcm.jack {
 type jack
 playback_ports {
  0 [ system:playback_1 system:playback_3 ]
  1 [ system:playback_2 system:playback_4 ]
 }
}

The old syntax with only one port for one channel is still supported:
playback_ports {
 0 system:playback_1
 1 system:playback_2
}

Without this patch an additional JACK client has to be used to
automatically connect the second JACK port but this could take some
time. Therefore it misses for example the first audio period on the
second port.

Signed-off-by: Timo Wischer <email address hidden>
Signed-off-by: Takashi Iwai <email address hidden>

340. By Timo Wischer <email address hidden> on 2019-01-29

jack: Refactoring: Lower indentation

to full fill 80 character limit of next commit.

Signed-off-by: Timo Wischer <email address hidden>
Signed-off-by: Takashi Iwai <email address hidden>

339. By Laxmi Devi <email address hidden> on 2019-01-11

jack: Removing snd_pcm_jack_format_t as it is not used

Signed-off-by: Laxmi Devi <email address hidden>
Signed-off-by: Jaroslav Kysela <email address hidden>

338. By Laxmi Devi <email address hidden> on 2019-01-11

jack: Replacing jack->channels with jack->num_ports

As jack->num_ports and jack->channels hold the same values,
jack->channels is redundant and hence removed.

Sanity check is added in prepare, to check if io->Channels is
same as jack->num_ports.

Signed-off-by: Laxmi Devi <email address hidden>
Signed-off-by: Jaroslav Kysela <email address hidden>

337. By Laxmi Devi <email address hidden> on 2019-01-08

jack: Moving jack_deactivate() to snd_pcm_jack_hw_free() to speedup the XRUN Recovery

Removed snd_pcm_jack_stop() from snd_pcm_jack_prepare(),as on XRUN we do
not need to reconnect or reconfigure anything.

Signed-off-by: Laxmi Devi <email address hidden>
Signed-off-by: Timo Wischer <email address hidden>
Signed-off-by: Takashi Iwai <email address hidden>

336. By Takashi Iwai on 2019-01-08

doc: Add forgotten aaf.txt to EXTRA_DIST

Signed-off-by: Takashi Iwai <email address hidden>

335. By Laxmi Devi <email address hidden> on 2019-01-08

jack: Move jack_activate() and jack_connect() to snd_pcm_jack_prepare()

Since the processing of jack_activate() and jack_connect() take a while
longer, snd_pcm_jack_start() was blocked.
Consider a usecase of reading the data from capture device and
writing to a playback device, since the capture device is
already started and the starting of playback device is blocked,
it leads to XRUNs for capture device.
Therefore these calls are moved to snd_pcm_jack_prepare(),
So that the capture and playback devices can be prepared in advance so
that starting of the device doesn't take too long.

Signed-off-by: Laxmi Devi <email address hidden>
Signed-off-by: Timo Wischer <email address hidden>
Signed-off-by: Takashi Iwai <email address hidden>

334. By Jaroslav Kysela <email address hidden> on 2019-01-07

Release v1.1.8

Signed-off-by: Jaroslav Kysela <email address hidden>

333. By Andre Guedes <email address hidden> on 2018-12-10

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 <email address hidden>
Signed-off-by: Takashi Iwai <email address hidden>

332. By Andre Guedes <email address hidden> on 2018-12-10

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 <email address hidden>
Signed-off-by: Takashi Iwai <email address hidden>

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.

Subscribers