diff options
author | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2014-07-02 08:02:00 +0200 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2014-07-02 21:43:07 +0200 |
commit | 80ec0ba6d05df65df42c3a7f74c5e2987cb682d7 (patch) | |
tree | 035713baeba2f0a03d373fdda1277cbc410da9a8 /audio/out/ao_coreaudio_utils.c | |
parent | fa85bfde6943e5d2955830cd5e51f24210022719 (diff) | |
download | mpv-80ec0ba6d05df65df42c3a7f74c5e2987cb682d7.tar.bz2 mpv-80ec0ba6d05df65df42c3a7f74c5e2987cb682d7.tar.xz |
ao_coreaudio: fill asbd with an helper function
Diffstat (limited to 'audio/out/ao_coreaudio_utils.c')
-rw-r--r-- | audio/out/ao_coreaudio_utils.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/audio/out/ao_coreaudio_utils.c b/audio/out/ao_coreaudio_utils.c index f5cc43db0b..235e7fba42 100644 --- a/audio/out/ao_coreaudio_utils.c +++ b/audio/out/ao_coreaudio_utils.c @@ -25,6 +25,7 @@ #include "audio/out/ao_coreaudio_utils.h" #include "audio/out/ao_coreaudio_properties.h" #include "osdep/timer.h" +#include "audio/format.h" void ca_print_device_list(struct ao *ao) { @@ -125,6 +126,31 @@ bool check_ca_st(struct ao *ao, int level, OSStatus code, const char *message) return false; } +void ca_fill_asbd(struct ao *ao, AudioStreamBasicDescription *asbd) +{ + asbd->mSampleRate = ao->samplerate; + asbd->mFormatID = AF_FORMAT_IS_AC3(ao->format) ? + kAudioFormat60958AC3 : + kAudioFormatLinearPCM; + asbd->mChannelsPerFrame = ao->channels.num; + asbd->mBitsPerChannel = af_fmt2bits(ao->format); + asbd->mFormatFlags = kAudioFormatFlagIsPacked; + + if ((ao->format & AF_FORMAT_POINT_MASK) == AF_FORMAT_F) + asbd->mFormatFlags |= kAudioFormatFlagIsFloat; + + if ((ao->format & AF_FORMAT_SIGN_MASK) == AF_FORMAT_SI) + asbd->mFormatFlags |= kAudioFormatFlagIsSignedInteger; + + if ((ao->format & AF_FORMAT_END_MASK) == AF_FORMAT_BE) + asbd->mFormatFlags |= kAudioFormatFlagIsBigEndian; + + asbd->mFramesPerPacket = 1; + asbd->mBytesPerPacket = asbd->mBytesPerFrame = + asbd->mFramesPerPacket * asbd->mChannelsPerFrame * + (asbd->mBitsPerChannel / 8); +} + void ca_print_asbd(struct ao *ao, const char *description, const AudioStreamBasicDescription *asbd) { |