summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_coreaudio.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-06-29 23:59:41 +0200
committerwm4 <wm4@nowhere>2015-06-30 00:02:12 +0200
commit2f8eabe2166f897b9290ff154c882e87fee16746 (patch)
treeef2326bab605b5a4f411f886dd0aadc646c8d4f5 /audio/out/ao_coreaudio.c
parent302aaddc262140ef1cbd962aa3177ded670f39bb (diff)
downloadmpv-2f8eabe2166f897b9290ff154c882e87fee16746.tar.bz2
mpv-2f8eabe2166f897b9290ff154c882e87fee16746.tar.xz
ao_coreaudio: restore physical format if it can't be set exactly
May help with (supposedly) bad drivers, which can put the device into some sort of broken state when trying to set a different physical format. When the previous format is restored, it apparently recovers. This might make the change-physical-format suboption more robust.
Diffstat (limited to 'audio/out/ao_coreaudio.c')
-rw-r--r--audio/out/ao_coreaudio.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/audio/out/ao_coreaudio.c b/audio/out/ao_coreaudio.c
index b39cebc2e4..8fba7a944c 100644
--- a/audio/out/ao_coreaudio.c
+++ b/audio/out/ao_coreaudio.c
@@ -235,7 +235,8 @@ static void init_physical_format(struct ao *ao)
&p->original_asbd);
CHECK_CA_WARN("could not get current physical stream format");
- ca_change_physical_format_sync(ao, streams[i], best_asbd);
+ if (!ca_change_physical_format_sync(ao, streams[i], best_asbd))
+ p->original_asbd = (AudioStreamBasicDescription){0};
break;
}
}