[alsa-devel] [RFCv3][PATCH 00/39] axfer: rewrite aplay, adding 'timer-based scheduling' option

Takashi Sakamoto o-takashi at sakamocchi.jp
Mon Oct 2 02:19:01 CEST 2017


Hi,

This 3rd RFC patchset updates my previous one:
[alsa-devel] [RFCv2][PATCH 00/38] alsa-utils: axfer: rewrite aplay
http://mailman.alsa-project.org/pipermail/alsa-devel/2017-September/125574.html

For aim of this rewrite and its intension, please refer to my former posts.

In this version, I add an option to support 'timer-based scheduling' scenario,
which PulseAudio developers introduced. Please refer to patch 32:
 * axfer: add support for timer-based MMAP operation

You can use this mode by adding '-sched-type=timer' option into command
line.

The other difference from my previous one:
 - fix some bugs to handle non-interleaved buffer on mapped page frame.
 - use snd_pcm_status() instead of snd_pcm_state() to execute hwsync.
 - minor fixes.

In my plan, this is the last version including below patches. In next post,
options added by below patches are categorized as obsoleted:
 * axfer: add an option to support volume unit meter
 * axfer: add a unit test for vumeter calculation
 * axfer: add an option for formatted filename
 * axfer: add an option to handle key events
 * axfer: add a parser for channel map API
 * axfer: add a feature to generate a file for process id

Additionally, for next post, I'll prepare for help messages and man for this
program.

Regards

Takashi Sakamoto (39):
  axfer: add an entry point for this command
  axfer: add a sub-command to print list of PCMs/devices
  axfer: add a common interface to handle a file with audio-specific
    data format
  axfer: add support for a container of Microsoft/IBM RIFF/Wave format
  axfer: add support for a container of Sparc AU format
  axfer: add support for a container of Creative Tech. voice format
  axfer: add support for a container of raw data
  axfer: add unit test for container interface
  axfer: add a common interface to align data frames on different layout
  axfer: add support for a mapper for single target
  axfer: add support for a mapper for multiple target
  axfer: add a unit test for mapper interface
  axfer: add a parser for command-line options
  axfer: add a common interface to transfer data frames
  axfer: add support to transfer data frames by alsa-lib PCM APIs
  axfer: add support for blocking data transmission operation of
    alsa-lib PCM API
  axfer: add a sub-command to transfer data frames
  axfer: add informative output and an option to suppress it
  axfer: add an option to dump available hardware parameters
  axfer: add options related to duration and obsolete '--max-file-size'
    option
  axfer: add an option to finish transmission at XRUN
  axfer: add a common interface of waiter for I/O event notification
  axfer: add support of waiter for poll(2)
  axfer: add support for non-blocking operation
  axfer: add support for MMAP PCM operation
  axfer: add an option to suppress event waiting
  axfer: add options for buffer arrangement
  axfer: add options for software parameters of PCM substream
  axfer: add options for plugins in alsa-lib
  axfer: add an implementation of waiter for epoll(7)
  axfer: add an option for waiter type
  axfer: add support for timer-based MMAP operation
  axfer: add an option to support volume unit meter
  axfer: add a unit test for vumeter calculation
  axfer: add an option for formatted filename
  axfer: add an option to handle key events
  axfer: add a parser for channel map API
  axfer: add a feature to generate a file for process id
  axfer: obsolete some test options

 Makefile.am                       |   2 +-
 axfer/Makefile.am                 |  61 +++
 axfer/container-au.c              | 207 ++++++++
 axfer/container-raw.c             |  66 +++
 axfer/container-riff-wave.c       | 581 ++++++++++++++++++++++
 axfer/container-voc.c             | 843 ++++++++++++++++++++++++++++++++
 axfer/container.c                 | 470 ++++++++++++++++++
 axfer/container.h                 | 126 +++++
 axfer/key-event.c                 | 121 +++++
 axfer/key-event.h                 |  19 +
 axfer/main.c                      | 194 ++++++++
 axfer/mapper-multiple.c           | 271 +++++++++++
 axfer/mapper-single.c             | 195 ++++++++
 axfer/mapper.c                    | 152 ++++++
 axfer/mapper.h                    |  87 ++++
 axfer/misc.h                      |  16 +
 axfer/options.c                   | 980 ++++++++++++++++++++++++++++++++++++++
 axfer/options.h                   |  92 ++++
 axfer/subcmd-list.c               | 234 +++++++++
 axfer/subcmd-transfer.c           | 525 ++++++++++++++++++++
 axfer/subcmd.h                    |  18 +
 axfer/test/Makefile.am            |  39 ++
 axfer/test/container-test.c       | 299 ++++++++++++
 axfer/test/generator.c            | 260 ++++++++++
 axfer/test/generator.h            |  47 ++
 axfer/test/mapper-test.c          | 491 +++++++++++++++++++
 axfer/test/vumeter-test.c         | 184 +++++++
 axfer/vumeter.c                   | 546 +++++++++++++++++++++
 axfer/vumeter.h                   |  55 +++
 axfer/waiter-epoll.c              |  81 ++++
 axfer/waiter-poll.c               |  68 +++
 axfer/waiter.c                    |  84 ++++
 axfer/waiter.h                    |  52 ++
 axfer/xfer-libasound-irq-mmap.c   | 271 +++++++++++
 axfer/xfer-libasound-irq-rw.c     | 520 ++++++++++++++++++++
 axfer/xfer-libasound-timer-mmap.c | 474 ++++++++++++++++++
 axfer/xfer-libasound.c            | 737 ++++++++++++++++++++++++++++
 axfer/xfer-libasound.h            |  60 +++
 axfer/xfer.c                      | 191 ++++++++
 axfer/xfer.h                      |  76 +++
 configure.ac                      |   3 +-
 41 files changed, 9796 insertions(+), 2 deletions(-)
 create mode 100644 axfer/Makefile.am
 create mode 100644 axfer/container-au.c
 create mode 100644 axfer/container-raw.c
 create mode 100644 axfer/container-riff-wave.c
 create mode 100644 axfer/container-voc.c
 create mode 100644 axfer/container.c
 create mode 100644 axfer/container.h
 create mode 100644 axfer/key-event.c
 create mode 100644 axfer/key-event.h
 create mode 100644 axfer/main.c
 create mode 100644 axfer/mapper-multiple.c
 create mode 100644 axfer/mapper-single.c
 create mode 100644 axfer/mapper.c
 create mode 100644 axfer/mapper.h
 create mode 100644 axfer/misc.h
 create mode 100644 axfer/options.c
 create mode 100644 axfer/options.h
 create mode 100644 axfer/subcmd-list.c
 create mode 100644 axfer/subcmd-transfer.c
 create mode 100644 axfer/subcmd.h
 create mode 100644 axfer/test/Makefile.am
 create mode 100644 axfer/test/container-test.c
 create mode 100644 axfer/test/generator.c
 create mode 100644 axfer/test/generator.h
 create mode 100644 axfer/test/mapper-test.c
 create mode 100644 axfer/test/vumeter-test.c
 create mode 100644 axfer/vumeter.c
 create mode 100644 axfer/vumeter.h
 create mode 100644 axfer/waiter-epoll.c
 create mode 100644 axfer/waiter-poll.c
 create mode 100644 axfer/waiter.c
 create mode 100644 axfer/waiter.h
 create mode 100644 axfer/xfer-libasound-irq-mmap.c
 create mode 100644 axfer/xfer-libasound-irq-rw.c
 create mode 100644 axfer/xfer-libasound-timer-mmap.c
 create mode 100644 axfer/xfer-libasound.c
 create mode 100644 axfer/xfer-libasound.h
 create mode 100644 axfer/xfer.c
 create mode 100644 axfer/xfer.h

-- 
2.11.0



More information about the Alsa-devel mailing list