Add ohm, an OpenHome Songcast sender audio backend
Set variables for a Docker build (used by another workflow). / Set variables required for docker build. (push) Successful in 1s
Build and conditionally push docker image / docker-vars (push) Successful in 2s
Build and conditionally push docker image / Build and conditionally push docker image (SHAIRPORT_SYNC_BRANCH=.
, ./docker/classic/Dockerfile, classic) (push) Failing after 31m52s
Build and conditionally push docker image / Build and conditionally push docker image (SHAIRPORT_SYNC_BRANCH=.
NQPTP_BRANCH=${{ needs.docker-vars.outputs.nqptp_branch }}
, ./docker/Dockerfile, main) (push) Failing after 31m49s
Set variables for a Docker build (used by another workflow). / Set variables required for docker build. (push) Successful in 1s
Build and conditionally push docker image / docker-vars (push) Successful in 2s
Build and conditionally push docker image / Build and conditionally push docker image (SHAIRPORT_SYNC_BRANCH=.
, ./docker/classic/Dockerfile, classic) (push) Failing after 31m52s
Build and conditionally push docker image / Build and conditionally push docker image (SHAIRPORT_SYNC_BRANCH=.
NQPTP_BRANCH=${{ needs.docker-vars.outputs.nqptp_branch }}
, ./docker/Dockerfile, main) (push) Failing after 31m49s
Streams AirPlay audio to OpenHome/Songcast receivers as OHU unicast PCM (16/24-bit). Sends are paced on the PTP master clock so receivers slave to the AirPlay group clock through their buffer-fill servo; MediaLatency carries the phase, matching the wire behaviour of Linn's own sender (zero flags and timestamps). delay() reports the newest frame's playtime lead so shairport feeds a receiver latency ahead. Handles Join, Listen, Leave and Resend with a frame history, and forwards track metadata and metatext from the metadata hub. With -r <name>, ohm_upnp controls the receiver over UPnP: discovered by friendly name via SSDP at time of use, woken, switched to its Songcast source and pointed at this sender when a session starts; volume follows the AirPlay slider capped at the device's VolumeLimit; standby follows some minutes after the session ends.
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# Minimal cross-build of shairport-sync with the OHM Songcast sender backend,
|
||||
# for linux/arm64 (Raspberry Pi OS aarch64). Produces a glibc binary compatible
|
||||
# with Debian bullseye (glibc 2.31) and later (e.g. bookworm).
|
||||
#
|
||||
# Usage from the repo root:
|
||||
# docker buildx build --platform linux/arm64 --target binary \
|
||||
# -f docker/Dockerfile.ohm --output type=local,dest=./out-ohm .
|
||||
#
|
||||
# Then copy ./out-ohm/shairport-sync to the Pi.
|
||||
#
|
||||
# FFmpeg is taken from Debian packages (libavcodec-dev etc.) rather than built
|
||||
# from source, to keep the cross-build fast under emulation.
|
||||
|
||||
ARG DEBIAN_VERSION=bullseye
|
||||
|
||||
FROM --platform=linux/arm64 debian:${DEBIAN_VERSION} AS builder
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
autoconf \
|
||||
automake \
|
||||
libtool \
|
||||
pkg-config \
|
||||
git \
|
||||
ca-certificates \
|
||||
xxd \
|
||||
libasound2-dev \
|
||||
libplist-dev \
|
||||
libplist-utils \
|
||||
libssl-dev \
|
||||
libsodium-dev \
|
||||
libgcrypt-dev \
|
||||
uuid-dev \
|
||||
libavcodec-dev \
|
||||
libavformat-dev \
|
||||
libswresample-dev \
|
||||
libavutil-dev \
|
||||
libavahi-client-dev \
|
||||
avahi-daemon \
|
||||
libdbus-1-dev \
|
||||
libglib2.0-dev \
|
||||
libconfig-dev \
|
||||
libpopt-dev \
|
||||
libsndfile-dev \
|
||||
libsoxr-dev \
|
||||
xmltoman \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /shairport-sync
|
||||
COPY . .
|
||||
|
||||
WORKDIR /shairport-sync/build
|
||||
RUN autoreconf -i ../
|
||||
RUN ../configure --sysconfdir=/etc --with-alsa \
|
||||
--with-avahi --with-ssl=openssl \
|
||||
--with-airplay-2 --with-ffmpeg --with-metadata \
|
||||
--with-ohm --with-dummy --with-pipe --with-stdout \
|
||||
--with-dbus-interface --with-mpris-interface \
|
||||
--with-convolution --with-soxr
|
||||
RUN make -j"$(nproc)"
|
||||
|
||||
# Target that yields just the binary on the host filesystem via --output.
|
||||
FROM --platform=linux/arm64 scratch AS binary
|
||||
COPY --from=builder /shairport-sync/build/shairport-sync /shairport-sync
|
||||
Reference in New Issue
Block a user