gboolean gst_core_audio_open (GstCoreAudio * core_audio) { if (!gst_core_audio_open_impl (core_audio)) return FALSE; if (core_audio->is_src) { AudioStreamBasicDescription asbd_in; UInt32 propertySize; OSStatus status; GstOsxAudioSrc *src = GST_OSX_AUDIO_SRC (GST_OBJECT_PARENT (core_audio->osxbuf)); propertySize = sizeof (asbd_in); status = AudioUnitGetProperty (core_audio->audiounit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 1, &asbd_in, &propertySize); if (status) { AudioComponentInstanceDispose (core_audio->audiounit); core_audio->audiounit = NULL; GST_WARNING_OBJECT (core_audio, "Unable to obtain device properties: %d", (int) status); return FALSE; } else { src->deviceChannels = asbd_in.mChannelsPerFrame; } } return TRUE; }
gboolean gst_core_audio_open (GstCoreAudio * core_audio) { OSStatus status; /* core_audio->osxbuf is already locked at this point */ core_audio->cached_caps_valid = FALSE; gst_caps_replace (&core_audio->cached_caps, NULL); if (!gst_core_audio_open_impl (core_audio)) return FALSE; /* Add property listener */ status = AudioUnitAddPropertyListener (core_audio->audiounit, kAudioUnitProperty_AudioChannelLayout, _audio_unit_property_listener, core_audio); if (status != noErr) { GST_ERROR_OBJECT (core_audio, "Failed to add audio channel layout property " "listener for AudioUnit: %d", (int) status); } status = AudioUnitAddPropertyListener (core_audio->audiounit, kAudioUnitProperty_StreamFormat, _audio_unit_property_listener, core_audio); if (status != noErr) { GST_ERROR_OBJECT (core_audio, "Failed to add stream format property " "listener for AudioUnit: %d", (int) status); } /* Initialize the AudioUnit. We keep the audio unit initialized early so that * we can probe the underlying device. */ status = AudioUnitInitialize (core_audio->audiounit); if (status) { GST_ERROR_OBJECT (core_audio, "Failed to initialize AudioUnit: %d", (int) status); return FALSE; } return TRUE; }