diff options
author | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-06-26 08:16:34 +0200 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-07-22 21:53:17 +0200 |
commit | 838fa07376e3b6c34c2a75535d9f29b9eb1b0db5 (patch) | |
tree | 9a71d06d3a2ccfdfcb0800c1b413b6b2cbb1008b /audio/out/ao_coreaudio.c | |
parent | 40f6e2e041b7c0d690b1a22d4bb706feef991022 (diff) | |
download | mpv-838fa07376e3b6c34c2a75535d9f29b9eb1b0db5.tar.bz2 mpv-838fa07376e3b6c34c2a75535d9f29b9eb1b0db5.tar.xz |
ao_coreaudio: move AudioStreamChangeFormat to common file and refactor
Diffstat (limited to 'audio/out/ao_coreaudio.c')
-rw-r--r-- | audio/out/ao_coreaudio.c | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/audio/out/ao_coreaudio.c b/audio/out/ao_coreaudio.c index a633849aca..4d11f40d51 100644 --- a/audio/out/ao_coreaudio.c +++ b/audio/out/ao_coreaudio.c @@ -38,7 +38,6 @@ #include "ao.h" #include "audio/format.h" -#include "osdep/timer.h" #include "core/subopt-helper.h" #include "core/mp_ring.h" @@ -583,91 +582,6 @@ coreaudio_error: return CONTROL_FALSE; } -/***************************************************************************** -* AudioStreamChangeFormat: Change i_stream_id to change_format -*****************************************************************************/ -static int AudioStreamChangeFormat(AudioStreamID i_stream_id, - AudioStreamBasicDescription change_format) -{ - OSStatus err = noErr; - int i; - AudioObjectPropertyAddress p_addr; - - static volatile int stream_format_changed; - stream_format_changed = 0; - - ca_print_asbd("setting stream format:", &change_format); - - /* Install the callback. */ - p_addr.mSelector = kAudioStreamPropertyPhysicalFormat; - p_addr.mScope = kAudioObjectPropertyScopeGlobal; - p_addr.mElement = kAudioObjectPropertyElementMaster; - - err = AudioObjectAddPropertyListener(i_stream_id, - &p_addr, - ca_stream_listener, - (void *)&stream_format_changed); - if (err != noErr) { - ca_msg(MSGL_WARN, - "AudioStreamAddPropertyListener failed: [%4.4s]\n", - (char *)&err); - return CONTROL_FALSE; - } - - /* Change the format. */ - err = SetAudioProperty(i_stream_id, - kAudioStreamPropertyPhysicalFormat, - sizeof(AudioStreamBasicDescription), &change_format); - if (err != noErr) { - ca_msg(MSGL_WARN, "could not set the stream format: [%4.4s]\n", - (char *)&err); - return CONTROL_FALSE; - } - - /* The AudioStreamSetProperty is not only asynchronious, - * it is also not Atomic, in its behaviour. - * Therefore we check 5 times before we really give up. - * FIXME: failing isn't actually implemented yet. */ - for (i = 0; i < 5; ++i) { - AudioStreamBasicDescription actual_format; - int j; - for (j = 0; !stream_format_changed && j < 50; ++j) - mp_sleep_us(10000); - if (stream_format_changed) - stream_format_changed = 0; - else - ca_msg(MSGL_V, "reached timeout\n"); - - err = GetAudioProperty(i_stream_id, - kAudioStreamPropertyPhysicalFormat, - sizeof(AudioStreamBasicDescription), - &actual_format); - - ca_print_asbd("actual format in use:", &actual_format); - if (actual_format.mSampleRate == change_format.mSampleRate && - actual_format.mFormatID == change_format.mFormatID && - actual_format.mFramesPerPacket == change_format.mFramesPerPacket) { - /* The right format is now active. */ - break; - } - /* We need to check again. */ - } - - /* Removing the property listener. */ - err = AudioObjectRemovePropertyListener(i_stream_id, - &p_addr, - ca_stream_listener, - (void *)&stream_format_changed); - if (err != noErr) { - ca_msg(MSGL_WARN, - "AudioStreamRemovePropertyListener failed: [%4.4s]\n", - (char *)&err); - return CONTROL_FALSE; - } - - return CONTROL_TRUE; -} - static int play(struct ao *ao, void *output_samples, int num_bytes, int flags) { struct priv *p = ao->priv; |