From 5735b684de95ae59401a022bd27f1a7f36d03ab3 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 9 Nov 2013 23:20:02 +0100 Subject: af_convert24: fix complicated and incorrect format negotiation The conversion works for native endian only. The correct check lists supported format combination explicitly, but is also much simpler. --- audio/filter/af_convert24.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/audio/filter/af_convert24.c b/audio/filter/af_convert24.c index 56b405a7e9..18ce156467 100644 --- a/audio/filter/af_convert24.c +++ b/audio/filter/af_convert24.c @@ -23,15 +23,10 @@ static bool test_conversion(int src_format, int dst_format) { - if (!(src_format & AF_FORMAT_POINT_MASK) == AF_FORMAT_I) - return false; - if ((src_format & ~AF_FORMAT_BITS_MASK) != - (dst_format & ~AF_FORMAT_BITS_MASK)) - return false; - int srcbits = src_format & AF_FORMAT_BITS_MASK; - int dstbits = dst_format & AF_FORMAT_BITS_MASK; - return (srcbits == AF_FORMAT_24BIT && dstbits == AF_FORMAT_32BIT) || - (srcbits == AF_FORMAT_32BIT && dstbits == AF_FORMAT_24BIT); + return (src_format == AF_FORMAT_U24_NE && dst_format == AF_FORMAT_U32_NE) || + (src_format == AF_FORMAT_S24_NE && dst_format == AF_FORMAT_S32_NE) || + (src_format == AF_FORMAT_U32_NE && dst_format == AF_FORMAT_U24_NE) || + (src_format == AF_FORMAT_S32_NE && dst_format == AF_FORMAT_S24_NE); } static int control(struct af_instance *af, int cmd, void *arg) -- cgit v1.2.3