I tried to play a 24-bit FLAC file with mplayer and it decoded and tried to play it as 32-bit PCM. this lets that work (with aucat at least).
-- [email protected] SDF Public Access UNIX System - http://sdf.lonestar.org Index: Makefile =================================================================== RCS file: /cvs/ports/x11/mplayer/Makefile,v retrieving revision 1.160 diff -N -u -p Makefile --- Makefile 18 Nov 2009 21:20:15 -0000 1.160 +++ Makefile 11 Dec 2009 09:39:34 -0000 @@ -10,7 +10,7 @@ COMMENT= movie player supporting MPEG, DivX, AVI, ASF V= 20090708 N= mplayer DISTNAME= mplayer-export-snapshot-${V} -PKGNAME= ${N}-${V}p2 +PKGNAME= ${N}-${V}p3 CATEGORIES= x11 multimedia EXTRACT_SUFX= .tar.bz2 Index: files/ao_sndio.c =================================================================== RCS file: /cvs/ports/x11/mplayer/files/ao_sndio.c,v retrieving revision 1.1 diff -N -u -p files/ao_sndio.c --- files/ao_sndio.c 11 Oct 2009 13:36:23 -0000 1.1 +++ files/ao_sndio.c 11 Dec 2009 09:39:34 -0000 @@ -104,6 +104,26 @@ static int init(int rate, int channels, int format, in par.sig = 1; par.le = 0; break; + case AF_FORMAT_U32_LE: + par.bits = 32; + par.sig = 0; + par.le = 1; + break; + case AF_FORMAT_U32_BE: + par.bits = 32; + par.sig = 0; + par.le = 0; + break; + case AF_FORMAT_S32_LE: + par.bits = 32; + par.sig = 1; + par.le = 1; + break; + case AF_FORMAT_S32_BE: + par.bits = 32; + par.sig = 1; + par.le = 0; + break; default: mp_msg(MSGT_AO, MSGL_ERR, "ao2: unsupported format\n"); return 0; @@ -126,6 +146,10 @@ static int init(int rate, int channels, int format, in format = par.sig ? (par.le ? AF_FORMAT_S16_LE : AF_FORMAT_S16_BE) : (par.le ? AF_FORMAT_U16_LE : AF_FORMAT_U16_BE); + } else if (par.bits == 32 && par.bps == 4) { + format = par.sig ? + (par.le ? AF_FORMAT_S32_LE : AF_FORMAT_S32_BE) : + (par.le ? AF_FORMAT_U32_LE : AF_FORMAT_U32_BE); } else { mp_msg(MSGT_AO, MSGL_ERR, "ao2: couldn't set format\n"); return 0;
