From 8973167fea228e6adebdc50376acee48ca9bb870 Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Thu, 10 Dec 2009 22:49:52 +0100 Subject: [PATCH] auhal: Support 10.6 64bits framework. --- modules/audio_output/auhal.c | 43 ++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c index 651c5c62e5..12ace3567c 100644 --- a/modules/audio_output/auhal.c +++ b/modules/audio_output/auhal.c @@ -40,25 +40,43 @@ #define __MACHINEEXCEPTIONS__ #include +#include #include #include #include #include +#ifndef verify_noerr +#define verify_noerr(a) assert((a) == noErr) +#endif + +#if AUDIO_UNIT_VERSION < 1060 +#define AudioComponent Component +#define AudioComponentDescription ComponentDescription +#define AudioComponentFindNext FindNextComponent +#define AudioComponentInstanceNew OpenAComponent +#define AudioComponentInstanceDispose CloseComponent +#define AudioComponentInstanceNew OpenAComponent +#define AudioComponentInstanceNew OpenAComponent +#else +#include +#endif + #define STREAM_FORMAT_MSG( pre, sfm ) \ - pre "[%ld][%4.4s][%ld][%ld][%ld][%ld][%ld][%ld]", \ + pre "[%u][%4.4s][%u][%u][%u][%u][%u][%u]", \ (UInt32)sfm.mSampleRate, (char *)&sfm.mFormatID, \ sfm.mFormatFlags, sfm.mBytesPerPacket, \ sfm.mFramesPerPacket, sfm.mBytesPerFrame, \ sfm.mChannelsPerFrame, sfm.mBitsPerChannel #define STREAM_FORMAT_MSG_FULL( pre, sfm ) \ - pre ":\nsamplerate: [%ld]\nFormatID: [%4.4s]\nFormatFlags: [%ld]\nBypesPerPacket: [%ld]\nFramesPerPacket: [%ld]\nBytesPerFrame: [%ld]\nChannelsPerFrame: [%ld]\nBitsPerChannel[%ld]", \ + pre ":\nsamplerate: [%u]\nFormatID: [%4.4s]\nFormatFlags: [%u]\nBypesPerPacket: [%u]\nFramesPerPacket: [%u]\nBytesPerFrame: [%u]\nChannelsPerFrame: [%u]\nBitsPerChannel[%u]", \ (UInt32)sfm.mSampleRate, (char *)&sfm.mFormatID, \ sfm.mFormatFlags, sfm.mBytesPerPacket, \ sfm.mFramesPerPacket, sfm.mBytesPerFrame, \ sfm.mChannelsPerFrame, sfm.mBitsPerChannel +#define FRAMESIZE 2048 #define BUFSIZE 0xffffff #define AOUT_VAR_SPDIF_FLAG 0xf00000 @@ -86,7 +104,7 @@ struct aout_sys_t mtime_t clock_diff; /* Difference between VLC clock and Device clock */ /* AUHAL specific */ - Component au_component; /* The Audiocomponent we use */ + AudioComponent au_component; /* The Audiocomponent we use */ AudioUnit au_unit; /* The AudioUnit we use */ uint8_t p_remainder_buffer[BUFSIZE]; uint32_t i_read_bytes; @@ -129,6 +147,7 @@ static int AudioDeviceCallback ( vlc_object_t *, const char *, vlc_value_t, vlc_value_t, void * ); + /***************************************************************************** * Module descriptor *****************************************************************************/ @@ -281,7 +300,7 @@ static int OpenAnalog( aout_instance_t *p_aout ) OSStatus err = noErr; UInt32 i_param_size = 0, i = 0; int i_original; - ComponentDescription desc; + AudioComponentDescription desc; AudioStreamBasicDescription DeviceFormat; AudioChannelLayout *layout; AudioChannelLayout new_layout; @@ -294,14 +313,14 @@ static int OpenAnalog( aout_instance_t *p_aout ) desc.componentFlags = 0; desc.componentFlagsMask = 0; - p_sys->au_component = FindNextComponent( NULL, &desc ); + p_sys->au_component = AudioComponentFindNext( NULL, &desc ); if( p_sys->au_component == NULL ) { msg_Warn( p_aout, "we cannot find our HAL component" ); return false; } - err = OpenAComponent( p_sys->au_component, &p_sys->au_unit ); + err = AudioComponentInstanceNew( p_sys->au_component, &p_sys->au_unit ); if( err != noErr ) { msg_Warn( p_aout, "we cannot open our HAL component" ); @@ -526,7 +545,7 @@ static int OpenAnalog( aout_instance_t *p_aout ) DeviceFormat.mFramesPerPacket = 1; DeviceFormat.mBytesPerFrame = DeviceFormat.mBitsPerChannel * DeviceFormat.mChannelsPerFrame / 8; DeviceFormat.mBytesPerPacket = DeviceFormat.mBytesPerFrame * DeviceFormat.mFramesPerPacket; - + /* Set the desired format */ i_param_size = sizeof(AudioStreamBasicDescription); verify_noerr( AudioUnitSetProperty( p_sys->au_unit, @@ -550,7 +569,7 @@ static int OpenAnalog( aout_instance_t *p_aout ) /* Do the last VLC aout setups */ aout_FormatPrepare( &p_aout->output.output ); - p_aout->output.i_nb_samples = 2048; + p_aout->output.i_nb_samples = FRAMESIZE; aout_VolumeSoftInit( p_aout ); /* set the IOproc callback */ @@ -831,7 +850,7 @@ static void Close( vlc_object_t * p_this ) { verify_noerr( AudioOutputUnitStop( p_sys->au_unit ) ); verify_noerr( AudioUnitUninitialize( p_sys->au_unit ) ); - verify_noerr( CloseComponent( p_sys->au_unit ) ); + verify_noerr( AudioComponentInstanceDispose( p_sys->au_unit ) ); } if( p_sys->b_digital ) @@ -942,7 +961,7 @@ static void Probe( aout_instance_t * p_aout ) goto error; } - msg_Dbg( p_aout, "system has [%ld] device(s)", p_sys->i_devices ); + msg_Dbg( p_aout, "system has [%u] device(s)", p_sys->i_devices ); /* Allocate DeviceID array */ p_devices = (AudioDeviceID*)malloc( sizeof(AudioDeviceID) * p_sys->i_devices ); @@ -993,7 +1012,7 @@ static void Probe( aout_instance_t * p_aout ) &i_param_size, psz_name); if( err ) goto error; - msg_Dbg( p_aout, "DevID: %#lx DevName: %s", p_devices[i], psz_name ); + msg_Dbg( p_aout, "DevID: %u DevName: %s", p_devices[i], psz_name ); if( !AudioDeviceHasOutput( p_devices[i]) ) { @@ -1325,7 +1344,7 @@ static OSStatus RenderCallbackAnalog( vlc_object_t *_p_aout, /* We don't have enough data yet */ aout_buffer_t * p_buffer; p_buffer = aout_OutputNextBuffer( p_aout, current_date , false ); - + if( p_buffer != NULL ) { uint32_t i_second_mData_bytes = __MIN( p_buffer->i_buffer, ioData->mBuffers[0].mDataByteSize - i_mData_bytes ); -- 2.39.2