From 2d8b0633a49bd109c90b433d4db5d99c6e681ee0 Mon Sep 17 00:00:00 2001 From: David Reid Date: Sun, 4 Jul 2021 13:35:29 +1000 Subject: [PATCH] Fix some channel mapping bugs. --- miniaudio.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/miniaudio.h b/miniaudio.h index 12979b49..f0c74fc9 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -40206,7 +40206,7 @@ static ma_bool32 ma_is_spatial_channel_position(ma_channel channelPosition) return MA_FALSE; } - if (channelPosition >= MA_CHANNEL_AUX_0 || channelPosition <= MA_CHANNEL_AUX_31) { + if (channelPosition >= MA_CHANNEL_AUX_0 && channelPosition <= MA_CHANNEL_AUX_31) { return MA_FALSE; } @@ -42683,7 +42683,7 @@ MA_API ma_bool32 ma_channel_map_equal(ma_uint32 channels, const ma_channel* pCha } for (iChannel = 0; iChannel < channels; ++iChannel) { - if (pChannelMapA[iChannel] != pChannelMapB[iChannel]) { + if (ma_channel_map_get_channel(pChannelMapA, channels, iChannel) != ma_channel_map_get_channel(pChannelMapB, channels, iChannel)) { return MA_FALSE; } } @@ -42695,6 +42695,11 @@ MA_API ma_bool32 ma_channel_map_blank(ma_uint32 channels, const ma_channel* pCha { ma_uint32 iChannel; + /* A null channel map is equivalent to the default channel map. */ + if (pChannelMap == NULL) { + return MA_FALSE; + } + for (iChannel = 0; iChannel < channels; ++iChannel) { if (pChannelMap[iChannel] != MA_CHANNEL_NONE) { return MA_FALSE; @@ -42709,7 +42714,7 @@ MA_API ma_bool32 ma_channel_map_contains_channel_position(ma_uint32 channels, co ma_uint32 iChannel; for (iChannel = 0; iChannel < channels; ++iChannel) { - if (pChannelMap[iChannel] == channelPosition) { + if (ma_channel_map_get_channel(pChannelMap, channels, iChannel) == channelPosition) { return MA_TRUE; } }