summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_sndio.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/out/ao_sndio.c')
-rw-r--r--audio/out/ao_sndio.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/audio/out/ao_sndio.c b/audio/out/ao_sndio.c
index abce0efd36..f192ef98b5 100644
--- a/audio/out/ao_sndio.c
+++ b/audio/out/ao_sndio.c
@@ -116,12 +116,8 @@ static int init(struct ao *ao)
};
static const struct af_to_par af_to_par[] = {
{AF_FORMAT_U8, 8, 0},
- {AF_FORMAT_S8, 8, 1},
- {AF_FORMAT_U16, 16, 0},
{AF_FORMAT_S16, 16, 1},
- {AF_FORMAT_U24, 24, 0},
{AF_FORMAT_S24, 24, 1},
- {AF_FORMAT_U32, 32, 0},
{AF_FORMAT_S32, 32, 1},
};
const struct af_to_par *ap;
@@ -178,14 +174,14 @@ static int init(struct ao *ao)
MP_ERR(ao, "swapped endian output not supported\n");
goto error;
}
- if (p->par.bits == 8 && p->par.bps == 1) {
- ao->format = p->par.sig ? AF_FORMAT_S8 : AF_FORMAT_U8;
- } else if (p->par.bits == 16 && p->par.bps == 2) {
- ao->format = p->par.sig ? AF_FORMAT_S16 : AF_FORMAT_U16;
- } else if ((p->par.bits == 24 || p->par.msb) && p->par.bps == 3) {
- ao->format = p->par.sig ? AF_FORMAT_S24 : AF_FORMAT_U24;
- } else if ((p->par.bits == 32 || p->par.msb) && p->par.bps == 4) {
- ao->format = p->par.sig ? AF_FORMAT_S32 : AF_FORMAT_U32;
+ if (p->par.bits == 8 && p->par.bps == 1 && !p->par.sig) {
+ ao->format = AF_FORMAT_U8;
+ } else if (p->par.bits == 16 && p->par.bps == 2 && p->par.sig) {
+ ao->format = AF_FORMAT_S16;
+ } else if ((p->par.bits == 24 || p->par.msb) && p->par.bps == 3 && p->par.sig) {
+ ao->format = AF_FORMAT_S24;
+ } else if ((p->par.bits == 32 || p->par.msb) && p->par.bps == 4 && p->par.sig) {
+ ao->format = AF_FORMAT_S32;
} else {
MP_ERR(ao, "couldn't set format\n");
goto error;