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).

-- 
jake...@sdf.lonestar.org
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;

Reply via email to