diff options
Diffstat (limited to 'audio/out/ao_coreaudio_common.c')
-rw-r--r-- | audio/out/ao_coreaudio_common.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/audio/out/ao_coreaudio_common.c b/audio/out/ao_coreaudio_common.c index 56bb99314f..1755004f3f 100644 --- a/audio/out/ao_coreaudio_common.c +++ b/audio/out/ao_coreaudio_common.c @@ -76,6 +76,7 @@ static bool check_ca_st(int level, OSStatus code, const char *message) } while (0) #define CHECK_CA_ERROR(message) CHECK_CA_ERROR_L(coreaudio_error, message) +#define CHECK_CA_WARN(message) check_ca_st(MSGL_WARN, err, message) static void ca_print_asbd(const char *description, const AudioStreamBasicDescription *asbd) @@ -206,6 +207,17 @@ static Boolean IsAudioPropertySettable(AudioObjectID id, return AudioObjectIsPropertySettable(id, &p_addr, outData); } +static int AudioFormatIsDigital(AudioStreamBasicDescription asbd) +{ + switch (asbd.mFormatID) + case 'IAC3': + case 'iac3': + case kAudioFormat60958AC3: + case kAudioFormatAC3: + return CONTROL_OK; + return CONTROL_FALSE; +} + static int AudioStreamSupportsDigital(AudioStreamID stream) { AudioStreamRangedDescription *formats = NULL; @@ -225,14 +237,10 @@ static int AudioStreamSupportsDigital(AudioStreamID stream) for (int i = 0; i < n_formats; ++i) { AudioStreamBasicDescription asbd = formats[i].mFormat; ca_print_asbd("supported format:", &(asbd)); - - switch (asbd.mFormatID) - case 'IAC3': - case 'iac3': - case kAudioFormat60958AC3: - case kAudioFormatAC3: + if (AudioFormatIsDigital(asbd)) { free(formats); - return CONTROL_OK; + return CONTROL_TRUE; + } } free(formats); |