diff options
author | wm4 <wm4@nowhere> | 2015-04-29 23:08:16 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-04-29 23:10:45 +0200 |
commit | 382434d45a72967f5b607c871e363e02dce1f1e6 (patch) | |
tree | eb22f3627b0dcc2660fdb8cc67078f4fa8b6ffe4 /audio | |
parent | 34a5229b231f15c95876fed472bd1edc5283db31 (diff) | |
download | mpv-382434d45a72967f5b607c871e363e02dce1f1e6.tar.bz2 mpv-382434d45a72967f5b607c871e363e02dce1f1e6.tar.xz |
ao_coreaudio_exclusive: check format explicitly on change notifcation
This should for now be equivalent; it's merely more explicit and will
be required if we add PCM support.
Note that the property listeners actually tell you what property
exactly changed, but resolving the current listener mess would be too
hard. So check for changes manually.
Diffstat (limited to 'audio')
-rw-r--r-- | audio/out/ao_coreaudio_exclusive.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/audio/out/ao_coreaudio_exclusive.c b/audio/out/ao_coreaudio_exclusive.c index 6f5f247459..3e397486a2 100644 --- a/audio/out/ao_coreaudio_exclusive.c +++ b/audio/out/ao_coreaudio_exclusive.c @@ -357,12 +357,17 @@ static OSStatus render_cb_digital( // Check whether we need to reset the digital output stream. if (p->stream_asbd_changed) { - p->stream_asbd_changed = 0; - if (!p->reload_requested && ca_stream_supports_digital(ao, p->stream)) { - p->reload_requested = true; - ao_request_reload(ao); - MP_INFO(ao, "Stream format changed! Reloading.\n"); - } + AudioStreamBasicDescription f; + OSErr err = CA_GET(p->stream, kAudioStreamPropertyPhysicalFormat, &f); + CHECK_CA_WARN("could not get stream format"); + if (err == noErr && ca_asbd_equals(&p->stream_asbd, &f)) + p->stream_asbd_changed = 0; + } + + if (p->stream_asbd_changed && !p->reload_requested) { + p->reload_requested = true; + ao_request_reload(ao); + MP_INFO(ao, "Stream format changed! Reloading.\n"); } return noErr; |