# HG changeset patch # User nplourde # Date 1164755145 0 # Node ID 2d786b7625d78e9541e8448cb93e1b617ac2fd0c # Parent c611dfc4cb85e2f9f144ee522154e47d4498c629 adds support for AOCONTROL_GET_VOLUME/AOCONTROL_SET_VOLUME in ao_macosx, patcg by Crhis Roccati diff -r c611dfc4cb85 -r 2d786b7625d7 libao2/ao_macosx.c --- a/libao2/ao_macosx.c Tue Nov 28 22:50:02 2006 +0000 +++ b/libao2/ao_macosx.c Tue Nov 28 23:05:45 2006 +0000 @@ -171,13 +171,36 @@ } static int control(int cmd,void *arg){ +ao_control_vol_t *control_vol; +OSStatus err; +Float32 pan, vol; switch (cmd) { - case AOCONTROL_SET_DEVICE: - case AOCONTROL_GET_DEVICE: case AOCONTROL_GET_VOLUME: + control_vol = (ao_control_vol_t*)arg; + err = AudioUnitGetParameter(ao->theOutputUnit, kHALOutputParam_Volume, kAudioUnitScope_Global, 0, &vol); + + if(err==0) { + // printf("GET VOL=%f\n", vol); + control_vol->left=control_vol->right=vol*100.0/4.0; + return CONTROL_TRUE; + } + else { + return CONTROL_FALSE; + } + case AOCONTROL_SET_VOLUME: + control_vol = (ao_control_vol_t*)arg; + + vol=(control_vol->left+control_vol->right)*4.0/200.0; + err = AudioUnitSetParameter(ao->theOutputUnit, kHALOutputParam_Volume, kAudioUnitScope_Global, 0, vol, 0); + if(err==0) { + // printf("SET VOL=%f\n", vol); + return CONTROL_TRUE; + } + else { + return CONTROL_FALSE; + } /* Everything is currently unimplemented */ - return CONTROL_FALSE; default: return CONTROL_FALSE; }