paraslash

Paraslash network audio streaming tools


About
News
Download
Documentation
Development

Development


The table below shows the topics currently under development. Each topic is included in the integration branch shown as Branch . Topics in next are expected to be of higher quality than those in pu .

Name Branch Commits Description
duration-keyword next 1 make "duration" a new keyword for the mood grammar
list-cleanups next 9 clean up list.h
ll pu 6 new ll commands to set the log level
misc pu 3 smallish miscellaneous changes for master
mp4ff pu 140 provide our own copy of libmp4ff
openssl-3 pu 1 Don't use openssl APIs anymore which got depreciated in openssl-3.
poll pu 15 Swich from select(2) to poll(2)
rm_task_subcmd next 1 Remove the obsolete server command "tasks".
rm_v1_moods next 1 Remove version 1 moods.
score-formula next 1 rework the score formula of the audio file selector
sf_float pu 1 support 32 bit float sample format.
sha256 pu 5 switch from sha1 to sha256
ubsan next 1 New option for configure to activate ubsan
writer_improvements next 3 some small improvements which affect all writers

Topic branch details

The SHA1 number shown as tip can be used to checkout a commit which only contains the changes introduced in this topic.

duration-keyword

  • desc: make “duration” a new keyword for the mood grammar
  • state: started on 2018-08-30, cooking since 2021-10-10
  • branch: next
  • base: master
  • aim: master
  • number commits: 1
  • tip: 8d36eb43da27bef1e7bc3d626f46cb4c92ca2a41
  • merge commit: e685312803384885ef428ad5dcbdced9f2f327fb
  • merge date: Sun, 10 Oct 2021 17:11:05 +0200
  • rebase count: 3

The new “duration” keyword of the mood grammar makes it possible to impose a constraint on the duration of the admissible files.

A single patch which was created already in 2018 but did not propagate for years to next and master for no good reason.

     mp.c          | 21 +++++++++++++++++++++
     mp.h          |  1 +
     web/manual.md |  1 +
     yy/mp.lex     |  1 +
     yy/mp.y       |  5 +++++
     5 files changed, 29 insertions(+)

list-cleanups

  • desc: clean up list.h
  • state: started on 2021-05-15, cooking since 2021-08-17
  • branch: next
  • base: master
  • aim: master
  • number commits: 9
  • tip: 442a3320ff155d09b990c0ee2abace399cbcd6dd
  • merge commit: c5e51f2c5fe37c10895133fb824712c3b52022a3
  • merge date: Sun, 8 Aug 2021 17:36:07 +0200
  • rebase count: 19

A bunch of simple patches which streamline the macros and inline functions of list.h which were taken from linux long ago without adjusting the coding style.

Cleanups of the linked list code.

     afs.c           |   2 +-
     buffer_tree.c   |   4 +-
     chunk_queue.c   |   2 +-
     close_on_fork.c |   2 +-
     list.h          | 202 +++++++++++++++++++++-----------------------------------
     mood.c          |   6 +-
     net.c           |   2 +-
     sched.c         |   2 +-
     send_common.c   |   4 +-
     sync_filter.c   |   2 +-
     udp_send.c      |   4 +-
     vss.c           |   2 +-
     12 files changed, 90 insertions(+), 144 deletions(-)

ll

  • desc: new ll commands to set the log level
  • state: started on 2021-10-15
  • branch: pu
  • base: master
  • aim: master
  • number commits: 6
  • tip: a325e95bda9e84a1cf1d9a3b0c050045af595645
  • merge commit: 4c0fb26ea44407e083392f8b2aff0c9956bba3e2
  • merge date: Thu, 21 Oct 2021 20:21:10 +0200
  • rebase count: 3

       Makefile.real              |  2 ++
       afs.c                      | 11 ++++++++++
       audioc.c                   |  6 ++++++
       audiod.c                   |  6 ++----
       audiod_command.c           | 36 ++++++++++++++++++++++++++++++++
       client.c                   |  6 ++++++
       command.c                  | 38 ++++++++++++++++++++++++++++++---
       daemon.c                   | 52 ++++++++++++++++++++++++++++++++--------------
       daemon.h                   |  3 ++-
       error.h                    |  1 -
       interactive.c              | 16 ++++++++++++--
       interactive.h              |  4 +++-
       m4/lls/audiod_cmd.suite.m4 |  2 ++
       m4/lls/include/com_ll.m4   |  9 ++++++++
       m4/lls/server_cmd.suite.m4 |  2 ++
       play.c                     |  2 +-
       server.c                   |  9 ++++++--
       server.h                   | 15 ++-----------
       string.c                   | 31 ---------------------------
       string.h                   |  1 -
       20 files changed, 176 insertions(+), 76 deletions(-)
    

poll

  • desc: Swich from select(2) to poll(2)
  • state: started on 2021-09-24
  • branch: pu
  • base: master
  • aim: master
  • number commits: 15
  • tip: fad5d40d231ac871756b3d68d3ff6d76becc73af
  • merge commit: cbf4acb8a6c8898fb38be459097435c6979d73cb
  • merge date: Thu, 21 Oct 2021 20:19:17 +0200
  • rebase count: 0

       aacdec_filter.c    |   6 +-
       afh_recv.c         |  10 +--
       afs.c              |  39 +++++----
       alsa_write.c       |  14 ++--
       amp_filter.c       |   6 +-
       ao_write.c         |   8 +-
       audioc.c           |  16 ++--
       audiod.c           |  41 +++++-----
       audiod.h           |   2 +-
       audiod_command.c   |  11 ++-
       buffer_tree.c      |   4 +-
       check_wav.c        |  20 ++---
       check_wav.h        |   4 +-
       client.c           |  18 ++---
       client_common.c    |  39 +++++----
       command.c          |   2 +-
       compress_filter.c  |   6 +-
       configure.ac       |   4 +-
       dccp_recv.c        |  14 ++--
       dccp_send.c        |  15 ++--
       fd.c               | 146 +++++++++++++--------------------
       fd.h               |  12 ++-
       fecdec_filter.c    |   6 +-
       file_write.c       |  12 +--
       filter.c           |   7 +-
       filter.h           |  40 ++++-----
       filter_common.c    |  15 ++--
       flacdec_filter.c   |   8 +-
       grab_client.c      |  16 ++--
       gui.c              |  48 +++++------
       http_recv.c        |  20 ++---
       http_send.c        |  20 ++---
       interactive.c      |  48 ++++-------
       interactive.h      |   3 +-
       mp3dec_filter.c    |   8 +-
       net.c              |   8 +-
       net.h              |   2 +-
       oggdec_filter.c    |  10 +--
       opusdec_filter.c   |   8 +-
       oss_write.c        |  12 +--
       para.h             |   2 +
       play.c             |  38 ++++-----
       prebuffer_filter.c |   8 +-
       recv.c             |   7 +-
       recv.h             |  50 +++++-------
       recv_common.c      |  18 ++---
       resample_filter.c  |  14 ++--
       sched.c            | 233 +++++++++++++++++++++++++++++++++++++++--------------
       sched.h            |  69 ++++++++++------
       send.h             |  27 ++-----
       send_common.c      |   7 +-
       server.c           |  41 +++++-----
       signal.c           |   8 +-
       signal.h           |  21 +++--
       spxdec_filter.c    |   6 +-
       stdin.c            |  21 +++--
       stdout.c           |  18 ++---
       sync_filter.c      |  12 +--
       udp_recv.c         |  14 ++--
       udp_send.c         |   2 +-
       vss.c              |  36 ++++-----
       wav_filter.c       |   8 +-
       wmadec_filter.c    |   7 +-
       write.c            |  15 ++--
       write.h            |  30 +++----
       write_common.c     |   4 +-
       66 files changed, 728 insertions(+), 716 deletions(-)
    

misc

  • desc: smallish miscellaneous changes for master
  • state: testing
  • branch: pu
  • base: master
  • aim: master
  • number commits: 3
  • tip: 9001b642ec02b0de34f304e9b909bf9e7a27c6fc
  • merge commit: 598e65ddf6f5bb2eca865e9efd579ec829c82437
  • merge date: Thu, 21 Oct 2021 20:20:33 +0200
  • rebase count: 0

Stuff in here is too small to get its own topic branch, and safe enough to be applied to master without cooking in next.

     aac_afh.c    | 19 +++++++++----------
     afh.c        |  4 ++--
     afh.h        |  6 +++---
     afh_common.c |  4 ++--
     afh_recv.c   | 11 ++++++-----
     command.c    |  7 -------
     server.c     |  3 ++-
     vss.c        | 14 +++++++-------
     8 files changed, 31 insertions(+), 37 deletions(-)

mp4ff

  • desc: provide our own copy of libmp4ff
  • state: started on 2021-08-08
  • branch: pu
  • base: master
  • aim: master
  • number commits: 140
  • tip: bd6c0a915b2e23bb119b2ba563042b85b28f6d77
  • merge commit: 5ea5590928abf825ce5525116dc203a523e113b4
  • merge date: Thu, 21 Oct 2021 20:20:11 +0200
  • rebase count: 0

A stripped down copy of the discontinued libmp4ff library is has become part of paraslash. As a result, it is no longer necessary to install faad from source to get support for aac/m4a files. The faad decoder package must still be installed.

This 130+ patch behemoth adds a stripped down copy of libmp4ff to the repo. This has become necessary because the library was dropped from the faad project.

The series starts with a patch which adds an unmodified copy of the relevant parts of libmp4ff to the repo. All code is combined in a single .c file containing approximately 2K lines of code. The public API is defined in the new mp4.h.

The remaining patches clean up the two new files, simplifying and removing large parts of it. Some of the patches modifiy the API, and those require small changes to the aac audio format handler, which also becomes simpler due to these changes. The aac decoder, however, is not touched in this series.

     aac_afh.c    |  270 +++++----------
     configure.ac |   12 +-
     error.h      |   15 +-
     mp4.c        | 1046 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     mp4.h        |   87 +++++
     5 files changed, 1236 insertions(+), 194 deletions(-)

openssl-3

  • desc: Don’t use openssl APIs anymore which got depreciated in openssl-3.
  • state: started on 2021-09-10
  • branch: pu
  • base: master
  • aim: master
  • number commits: 1
  • tip: f3be7384d13081dd1511ec95fb6df9030caa2768
  • merge commit: 030b326422f527bc6e00e219d656a4323cce5c16
  • merge date: Thu, 21 Oct 2021 20:20:08 +0200
  • rebase count: 13

       openssl.c | 18 +++++++++++++++++-
       1 file changed, 17 insertions(+), 1 deletion(-)
    

poll

  • desc: Swich from select(2) to poll(2)
  • state: started on 2021-09-24
  • branch: pu
  • base: master
  • aim: master
  • number commits: 15
  • tip: fad5d40d231ac871756b3d68d3ff6d76becc73af
  • merge commit: cbf4acb8a6c8898fb38be459097435c6979d73cb
  • merge date: Thu, 21 Oct 2021 20:19:17 +0200
  • rebase count: 0

       aacdec_filter.c    |   6 +-
       afh_recv.c         |  10 +--
       afs.c              |  39 +++++----
       alsa_write.c       |  14 ++--
       amp_filter.c       |   6 +-
       ao_write.c         |   8 +-
       audioc.c           |  16 ++--
       audiod.c           |  41 +++++-----
       audiod.h           |   2 +-
       audiod_command.c   |  11 ++-
       buffer_tree.c      |   4 +-
       check_wav.c        |  20 ++---
       check_wav.h        |   4 +-
       client.c           |  18 ++---
       client_common.c    |  39 +++++----
       command.c          |   2 +-
       compress_filter.c  |   6 +-
       configure.ac       |   4 +-
       dccp_recv.c        |  14 ++--
       dccp_send.c        |  15 ++--
       fd.c               | 146 +++++++++++++--------------------
       fd.h               |  12 ++-
       fecdec_filter.c    |   6 +-
       file_write.c       |  12 +--
       filter.c           |   7 +-
       filter.h           |  40 ++++-----
       filter_common.c    |  15 ++--
       flacdec_filter.c   |   8 +-
       grab_client.c      |  16 ++--
       gui.c              |  48 +++++------
       http_recv.c        |  20 ++---
       http_send.c        |  20 ++---
       interactive.c      |  48 ++++-------
       interactive.h      |   3 +-
       mp3dec_filter.c    |   8 +-
       net.c              |   8 +-
       net.h              |   2 +-
       oggdec_filter.c    |  10 +--
       opusdec_filter.c   |   8 +-
       oss_write.c        |  12 +--
       para.h             |   2 +
       play.c             |  38 ++++-----
       prebuffer_filter.c |   8 +-
       recv.c             |   7 +-
       recv.h             |  50 +++++-------
       recv_common.c      |  18 ++---
       resample_filter.c  |  14 ++--
       sched.c            | 233 +++++++++++++++++++++++++++++++++++++++--------------
       sched.h            |  69 ++++++++++------
       send.h             |  27 ++-----
       send_common.c      |   7 +-
       server.c           |  41 +++++-----
       signal.c           |   8 +-
       signal.h           |  21 +++--
       spxdec_filter.c    |   6 +-
       stdin.c            |  21 +++--
       stdout.c           |  18 ++---
       sync_filter.c      |  12 +--
       udp_recv.c         |  14 ++--
       udp_send.c         |   2 +-
       vss.c              |  36 ++++-----
       wav_filter.c       |   8 +-
       wmadec_filter.c    |   7 +-
       write.c            |  15 ++--
       write.h            |  30 +++----
       write_common.c     |   4 +-
       66 files changed, 728 insertions(+), 716 deletions(-)
    

rm_task_subcmd

  • desc: Remove the obsolete server command “tasks”.
  • state: started on 2020-03-17, cooking since 2021-02-27
  • branch: next
  • base: master
  • aim: master
  • number commits: 1
  • tip: 5dffe231771540d1295c5d75b29920834478051f
  • merge commit: ad01d26fd6da15ea390d19a28082dd0400ccbfec
  • merge date: Sat, 27 Feb 2021 17:59:37 +0100
  • rebase count: 26

A single commit containing an incompatible change for 0.7.0.

The server command “tasks” server command has been removed.

     client.c                   | 1 -
     command.c                  | 8 --------
     m4/lls/server_cmd.suite.m4 | 9 ---------
     3 files changed, 18 deletions(-)

rm_v1_moods

  • desc: Remove version 1 moods.
  • state: started on 2020-03-16, cooking since 2021-02-27
  • branch: next
  • base: master
  • aim: master
  • number commits: 1
  • tip: 184ea897a9b446611a9d02315160b6d77c0926fe
  • merge commit: ea033fda3608cf2480f37a301c7ce6ec9c0f0ed3
  • merge date: Sat, 27 Feb 2021 17:59:36 +0100
  • rebase count: 26

A single commit which removes a long obsolete feature.

Support for the long deprecated version 1 moods, has been removed.

     configure.ac |   1 -
     mm.c         | 375 -------------------------------------------------------
     mm.h         |  62 ----------
     mood.c       | 399 ++++++-----------------------------------------------------
     4 files changed, 41 insertions(+), 796 deletions(-)

score-formula

  • desc: rework the score formula of the audio file selector
  • state: started on 2020-03-14, cooking since 2021-05-13
  • branch: next
  • base: master
  • aim: master
  • number commits: 1
  • tip: 86b5aba882056a6ff6d8645684e59222ba74a818
  • merge commit: c483c795293bc260e079fdfdc81967d809b4ec4b
  • merge date: Thu, 13 May 2021 18:12:16 +0200
  • rebase count: 22

  • A single patch which modifies the score function of the audio file selector to re-scale the two quantities that comprise the score value.

  • The score formula of the audio file selector has been reworked.

       mood.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++--------------
       1 file changed, 98 insertions(+), 25 deletions(-)
    

sf_float

  • desc: support 32 bit float sample format.
  • state: started on 2018-04-29
  • branch: pu
  • base: master
  • aim: master
  • number commits: 1
  • tip: 0e062fdee6aed6efe5be7fd1f07c5e81751620e6
  • merge commit: 098c0fe755bb54d53f8b920d6f5ff23854cfe5e8
  • merge date: Thu, 21 Oct 2021 20:18:34 +0200
  • rebase count: 83

A single patch which adds two new sample formats for 32 bit IEEE float waveform data.

  • The alsa writer also supports 32 bit float sample formats.

       alsa_write.c                    |  2 ++
       ao_write.c                      |  2 ++
       check_wav.c                     | 20 +++++++++++++++++---
       m4/lls/include/sample-format.m4 |  4 +++-
       para.h                          |  2 ++
       5 files changed, 26 insertions(+), 4 deletions(-)
    

sha256

  • desc: switch from sha1 to sha256
  • state: started on 2020-03-06
  • branch: pu
  • base: master
  • aim: master
  • number commits: 5
  • tip: 126b950f1bd70d1e5c200bc4157bbbb2798fc838
  • merge commit: a9680d98c02186c6ff42fd7e6856215d11287dac
  • merge date: Thu, 21 Oct 2021 20:18:34 +0200
  • rebase count: 0

A couple of changes which start to eliminate the use of sha1 in favor of sha256. This series is only the first step, though, as we need to keep sha1 for the time being to provide backward compatibility.

Starting with paraslash-0.7.0, the sha256 hash value of each known audio file is stored in the paraslash database while older versions employed the sha1 hash algorithm, which has been considered insecure since 2005 and should no longer be used today. The switch from sha1 to sha256 requires users to upgrade their database using the new para_upgrade_db program, followed by re-adding all files to recompute the hashes. With this approach all metadata stored in the database (last played date, num played value, attributes etc.) are kept. An simpler alternative is to start over from scratch by running the “init” command but this will lose these metadata.

Server and client now hash the session keys with sha256 rather than sha1 during the initial handshake. This feature is optional and backwards compatible: old clients can still connect to a new server (using sha1). Also new clients can connect to an old server (again using sha1).

     Makefile.in                |   1 +
     Makefile.real              |   5 +-
     afs.c                      |   2 +-
     aft.c                      |  34 ++--
     client_common.c            |  38 ++++-
     command.c                  |  35 ++++-
     configure.ac               |  14 +-
     crypt.h                    |  39 +++++
     crypt_common.c             |  25 +++
     gcrypt.c                   |  16 ++
     m4/lls/server.suite.m4     |   2 +-
     m4/lls/upgrade_db.suite.m4 |  33 ++++
     openssl.c                  |   8 +
     upgrade_db.c               | 382 +++++++++++++++++++++++++++++++++++++++++++++
     web/manual.md              |   8 +-
     15 files changed, 602 insertions(+), 40 deletions(-)

ubsan

  • desc: New option for configure to activate ubsan
  • state: started on 2017-07-15, cooking since 2021-09-23
  • branch: next
  • base: master
  • aim: master
  • number commits: 1
  • tip: b287a53fa3e3dffb51febedebff6efb0d1065c2c
  • merge commit: 7e818075881fba3d4b827fdc51962c3d37dca207
  • merge date: Thu, 23 Sep 2021 18:30:11 +0200
  • rebase count: 11

New option for configure: –enable-ubsan to detect and report undefined behaviour.

A single patch which adds an option to ./configure which instructs the compiler to activate its undefined behaviour checker.

     Makefile.in   | 2 ++
     Makefile.real | 5 +++++
     configure.ac  | 5 +++++
     3 files changed, 12 insertions(+)

writer_improvements

  • desc: some small improvements which affect all writers
  • state: started on 2021-09-05, cooking since 2021-10-21
  • branch: next
  • base: master
  • aim: master
  • number commits: 3
  • tip: 295bf77b48df9a409501f5cabce7bd0a96ce48dc
  • merge commit: b6af7acfb29f6b2572ad51a84b286cfe7a1e5937
  • merge date: Thu, 21 Oct 2021 20:04:44 +0200
  • rebase count: 0

A small set of patches which fix some minor issues, notably a problem related to the handling of early EOF which affects all paraslash writers.

Paraslash writers handle early end-of-file more gracefully.

The alsa writer no longer warns about spurious underruns.

     alsa_write.c   | 27 ++++++++++++++++++---------
     ao_write.c     | 12 +++++++++---
     oss_write.c    | 12 +++++++++---
     write.h        |  6 +++---
     write_common.c | 38 +++++++++++++++++++++-----------------
     5 files changed, 60 insertions(+), 35 deletions(-)