Hi, Following diff is needed to play a DVD(*) that has s24be audio. Without this, mplayer doesn't play the sound and outputs noise. Since mplayer uses 32bit to play 24bit, the alignment to msb or lsb must be specified properly.
ok or comment? * DVD disc of http://en.wikipedia.org/wiki/Beyonc%C3%A9_(album) :) Index: x11/mplayer/Makefile =================================================================== RCS file: /disk/cvs/openbsd/ports/x11/mplayer/Makefile,v retrieving revision 1.232 diff -u -p -r1.232 Makefile --- x11/mplayer/Makefile 31 Jan 2014 10:44:56 -0000 1.232 +++ x11/mplayer/Makefile 6 Feb 2014 14:30:13 -0000 @@ -15,7 +15,7 @@ SUBST_VARS += PREFIX CONFDIR # Distfiles must be hand-rolled, see README N = mplayer DISTNAME = mplayer-${V} -REVISION = 0 +REVISION = 1 EXTRACT_SUFX = .tar.xz CATEGORIES = x11 multimedia Index: x11/mplayer/patches/patch-libao2_ao_sndio_c =================================================================== RCS file: /disk/cvs/openbsd/ports/x11/mplayer/patches/patch-libao2_ao_sndio_c,v retrieving revision 1.1 diff -u -p -r1.1 patch-libao2_ao_sndio_c --- x11/mplayer/patches/patch-libao2_ao_sndio_c 31 Jan 2014 10:44:56 -0000 1.1 +++ x11/mplayer/patches/patch-libao2_ao_sndio_c 6 Feb 2014 14:30:13 -0000 @@ -1,7 +1,18 @@ $OpenBSD: patch-libao2_ao_sndio_c,v 1.1 2014/01/31 10:44:56 ratchov Exp $ ---- libao2/ao_sndio.c.orig Fri Jan 31 11:09:00 2014 -+++ libao2/ao_sndio.c Fri Jan 31 11:10:33 2014 -@@ -132,6 +132,8 @@ static int init(int rate, int channels, int format, in +--- libao2/ao_sndio.c.orig Tue Jan 7 07:02:58 2014 ++++ libao2/ao_sndio.c Thu Feb 6 21:38:57 2014 +@@ -110,6 +110,10 @@ static int init(int rate, int channels, int format, in + par.pchan = channels; + par.appbufsz = par.rate * 250 / 1000; /* 250ms buffer */ + par.round = par.rate * 10 / 1000; /* 10ms block size */ ++ ++ if (par.bits < SIO_BPS(par.bits) * 8) ++ par.msb = (par.le)? 0 : 1; ++ + if (!sio_setpar(hdl, &par)) { + mp_msg(MSGT_AO, MSGL_ERR, "ao2: couldn't set params\n"); + goto err_out; +@@ -132,6 +136,8 @@ static int init(int rate, int channels, int format, in ao_data.format |= par.sig ? AF_FORMAT_SI : AF_FORMAT_US; if (par.bits > 8) ao_data.format |= par.le ? AF_FORMAT_LE : AF_FORMAT_BE;
