summaryrefslogtreecommitdiffstats
path: root/audio/out
diff options
context:
space:
mode:
Diffstat (limited to 'audio/out')
-rw-r--r--audio/out/ao_coreaudio_utils.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/audio/out/ao_coreaudio_utils.c b/audio/out/ao_coreaudio_utils.c
index e8eccdc5d3..5eacc7f208 100644
--- a/audio/out/ao_coreaudio_utils.c
+++ b/audio/out/ao_coreaudio_utils.c
@@ -283,12 +283,13 @@ bool ca_asbd_is_better(AudioStreamBasicDescription *req,
return false;
if (old->mChannelsPerFrame > MP_NUM_CHANNELS)
return true;
+ if (req->mFormatID != new->mFormatID)
+ return false;
+ if (req->mFormatID != old->mFormatID)
+ return true;
- int mpfmt_req = ca_asbd_to_mp_format(req);
- int mpfmt_old = ca_asbd_to_mp_format(old);
- int mpfmt_new = ca_asbd_to_mp_format(new);
- if (af_format_conversion_score(mpfmt_req, mpfmt_old) >
- af_format_conversion_score(mpfmt_req, mpfmt_new))
+ if (!value_is_better(req->mBitsPerChannel, old->mBitsPerChannel,
+ new->mBitsPerChannel))
return false;
if (!value_is_better(req->mSampleRate, old->mSampleRate, new->mSampleRate))