summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_coreaudio_utils.c
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2014-07-02 08:02:00 +0200
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2014-07-02 21:43:07 +0200
commit80ec0ba6d05df65df42c3a7f74c5e2987cb682d7 (patch)
tree035713baeba2f0a03d373fdda1277cbc410da9a8 /audio/out/ao_coreaudio_utils.c
parentfa85bfde6943e5d2955830cd5e51f24210022719 (diff)
downloadmpv-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.c26
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)
{