summaryrefslogtreecommitdiffstats
path: root/libao2
diff options
context:
space:
mode:
authornplourde <nplourde@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-16 00:16:43 +0000
committernplourde <nplourde@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-16 00:16:43 +0000
commiteaa8e3bcb63facd521bf2b5c76829a8d8c39050c (patch)
tree7767ae0070c3d8c70033005bb78ed224256e8adb /libao2
parentdb9e8be1b20853dcb77ac13826a604bce05708b6 (diff)
downloadmpv-eaa8e3bcb63facd521bf2b5c76829a8d8c39050c.tar.bz2
mpv-eaa8e3bcb63facd521bf2b5c76829a8d8c39050c.tar.xz
simplifies the format matching logic. Chris Roccati <roccati@pobox.com>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15487 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2')
-rw-r--r--libao2/ao_macosx.c50
1 files changed, 3 insertions, 47 deletions
diff --git a/libao2/ao_macosx.c b/libao2/ao_macosx.c
index cff667b76f..ae9979ffd9 100644
--- a/libao2/ao_macosx.c
+++ b/libao2/ao_macosx.c
@@ -176,7 +176,7 @@ static int control(int cmd,void *arg){
return CONTROL_FALSE;
case AOCONTROL_GET_VOLUME:
propertySize=sizeof(stereoChannels);
- status = AudioDeviceGetProperty(ao->outputDeviceID, NULL, 0,
+ status = AudioDeviceGetProperty(ao->outputDeviceID, 0, false,
kAudioDevicePropertyPreferredChannelsForStereo, &propertySize,
&stereoChannels);
// printf("OSX: stereochannels %d ; %d \n",stereoChannels[0],stereoChannels[1]);
@@ -189,7 +189,7 @@ static int control(int cmd,void *arg){
return CONTROL_TRUE;
case AOCONTROL_SET_VOLUME:
propertySize=sizeof(stereoChannels);
- status = AudioDeviceGetProperty(ao->outputDeviceID, NULL, 0,
+ status = AudioDeviceGetProperty(ao->outputDeviceID, 0, false,
kAudioDevicePropertyPreferredChannelsForStereo, &propertySize,
&stereoChannels);
// printf("OSX: stereochannels %d ; %d \n",stereoChannels[0],stereoChannels[1]);
@@ -299,28 +299,6 @@ static int init(int rate,int channels,int format,int flags)
ao->outputStreamBasicDescription.mSampleRate=rate;
ao->outputStreamBasicDescription.mFormatID=kAudioFormatLinearPCM;
ao->outputStreamBasicDescription.mChannelsPerFrame=channels;
- switch(format&AF_FORMAT_BITS_MASK){
- case AF_FORMAT_8BIT: ao->outputStreamBasicDescription.mBitsPerChannel=8; break;
- case AF_FORMAT_16BIT: ao->outputStreamBasicDescription.mBitsPerChannel=16; break;
- case AF_FORMAT_24BIT: ao->outputStreamBasicDescription.mBitsPerChannel=24; break;
- case AF_FORMAT_32BIT: ao->outputStreamBasicDescription.mBitsPerChannel=32; break;
- }
- if((format&AF_FORMAT_POINT_MASK)==AF_FORMAT_F){
- // float
- ao->outputStreamBasicDescription.mFormatFlags=kAudioFormatFlagIsFloat|kAudioFormatFlagIsPacked;
- } else if((format&AF_FORMAT_SIGN_MASK)==AF_FORMAT_SI){
- // signed int
- ao->outputStreamBasicDescription.mFormatFlags=kAudioFormatFlagIsSignedInteger|kAudioFormatFlagIsPacked;
- } else {
- // unsigned int
- ao->outputStreamBasicDescription.mFormatFlags=kAudioFormatFlagIsPacked;
- }
- if((format&AF_FORMAT_END_MASK)==AF_FORMAT_BE)
- ao->outputStreamBasicDescription.mFormatFlags|=kAudioFormatFlagIsBigEndian;
-
- ao->outputStreamBasicDescription.mBytesPerPacket=
- ao->outputStreamBasicDescription.mBytesPerFrame=channels*(ao->outputStreamBasicDescription.mBitsPerChannel/8);
- ao->outputStreamBasicDescription.mFramesPerPacket=1;
print_format("wanted: ",&ao->outputStreamBasicDescription);
@@ -328,31 +306,9 @@ static int init(int rate,int channels,int format,int flags)
propertySize = sizeof(ao->outputStreamBasicDescription);
// status = AudioDeviceGetProperty(ao->outputDeviceID, 0, false, kAudioStreamPropertyPhysicalFormatMatch, &propertySize, &ao->outputStreamBasicDescription);
status = AudioDeviceGetProperty(ao->outputDeviceID, 0, false, kAudioDevicePropertyStreamFormatMatch, &propertySize, &ao->outputStreamBasicDescription);
- if (status || ao->outputStreamBasicDescription.mSampleRate!=rate
- || ao->outputStreamBasicDescription.mFormatID!=kAudioFormatLinearPCM) {
+ if (status) {
ao_msg(MSGT_AO,MSGL_V, "AudioDeviceGetProperty returned 0x%X when getting kAudioDevicePropertyStreamFormatMatch\n", (int)status);
- // failed (error, bad rate or bad type)
- // try 2: set only rate & type, no format details (bits, channels etc)
- propertySize = sizeof(ao->outputStreamBasicDescription);
- memset(&ao->outputStreamBasicDescription,0,propertySize);
- ao->outputStreamBasicDescription.mSampleRate=rate;
- ao->outputStreamBasicDescription.mFormatID=kAudioFormatLinearPCM;
- ao->outputStreamBasicDescription.mChannelsPerFrame=channels;
-// status = AudioDeviceGetProperty(ao->outputDeviceID, 0, false, kAudioStreamPropertyPhysicalFormatMatch, &propertySize, &ao->outputStreamBasicDescription);
- status = AudioDeviceGetProperty(ao->outputDeviceID, 0, false, kAudioDevicePropertyStreamFormatMatch, &propertySize, &ao->outputStreamBasicDescription);
- if (status || ao->outputStreamBasicDescription.mFormatID!=kAudioFormatLinearPCM) {
- ao_msg(MSGT_AO,MSGL_V, "AudioDeviceGetProperty returned 0x%X when getting kAudioDevicePropertyStreamFormatMatch\n", (int)status);
- // failed again. (error or bad type)
- // giving up... just read the default.
- propertySize = sizeof(ao->outputStreamBasicDescription);
-// status = AudioDeviceGetProperty(ao->outputDeviceID, 0, false, kAudioStreamPropertyPhysicalFormat, &propertySize, &ao->outputStreamBasicDescription);
- status = AudioDeviceGetProperty(ao->outputDeviceID, 0, false, kAudioDevicePropertyStreamFormat, &propertySize, &ao->outputStreamBasicDescription);
- if (status) {
- // failed to read the default format - WTF?
- ao_msg(MSGT_AO,MSGL_WARN, "AudioDeviceGetProperty returned 0x%X when getting kAudioDevicePropertyStreamFormat\n", (int)status);
return CONTROL_FALSE;
- }
- }
}
// propertySize = sizeof(ao->outputStreamBasicDescription);