oss: Bail out on unsupported audio formats.
authorAndre Noll <maan@tuebingen.mpg.de>
Wed, 1 Aug 2018 16:29:05 +0000 (18:29 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Sun, 30 Sep 2018 19:31:39 +0000 (21:31 +0200)
This is better than assuming signed 16 bit little endian. The patch
also improves the error message in oss.c that gets printed when the
audio format could not be set.

oss_write.c

index d4b7658..311a514 100644 (file)
@@ -57,7 +57,7 @@ static int get_oss_format(enum sample_format sf)
        case SF_S16_BE: return AFMT_S16_BE;
        case SF_U16_LE: return AFMT_U16_LE;
        case SF_U16_BE: return AFMT_U16_BE;
-       default: return AFMT_S16_LE;
+       default: return -E_BAD_SAMPLE_FORMAT;
        }
 }
 
@@ -113,10 +113,14 @@ static int oss_init(struct writer_node *wn, unsigned sample_rate,
        if (ret < 0)
                goto err;
        /* set PCM format */
-       sample_format = format = get_oss_format(sample_format);
+       ret = get_oss_format(sample_format);
+       if (ret < 0)
+               return ret;
+       sample_format = format = ret;
        ret = ioctl(powd->fd, SNDCTL_DSP_SETFMT, &format);
        if (ret < 0) {
                ret = -ERRNO_TO_PARA_ERROR(errno);
+               PARA_ERROR_LOG("could not set sample format\n");
                goto err;
        }
        ret = -E_BAD_SAMPLE_FORMAT;