gboolean gst_core_audio_initialize (GstCoreAudio * core_audio, AudioStreamBasicDescription format, GstCaps * caps, gboolean is_passthrough) { guint32 frame_size; GST_DEBUG_OBJECT (core_audio, "Initializing: passthrough:%d caps:%" GST_PTR_FORMAT, is_passthrough, caps); if (!gst_core_audio_initialize_impl (core_audio, format, caps, is_passthrough, &frame_size)) { return FALSE; } if (core_audio->is_src) { /* create AudioBufferList needed for recording */ core_audio->recBufferSize = frame_size * format.mBytesPerFrame; core_audio->recBufferList = buffer_list_alloc (format.mChannelsPerFrame, core_audio->recBufferSize, /* Currently always TRUE (i.e. interleaved) */ !(format.mFormatFlags & kAudioFormatFlagIsNonInterleaved)); } return TRUE; }
gboolean gst_core_audio_initialize (GstCoreAudio * core_audio, AudioStreamBasicDescription format, GstCaps * caps, gboolean is_passthrough) { guint32 frame_size; OSStatus status; GST_DEBUG_OBJECT (core_audio, "Initializing: passthrough:%d caps:%" GST_PTR_FORMAT, is_passthrough, caps); if (!gst_core_audio_initialize_impl (core_audio, format, caps, is_passthrough, &frame_size)) { goto error; } if (core_audio->is_src) { /* create AudioBufferList needed for recording */ core_audio->recBufferList = buffer_list_alloc (format.mChannelsPerFrame, frame_size * format.mBytesPerFrame); } /* Initialize the AudioUnit */ status = AudioUnitInitialize (core_audio->audiounit); if (status) { GST_ERROR_OBJECT (core_audio, "Failed to initialise AudioUnit: %d", (int) status); goto error; } return TRUE; error: if (core_audio->is_src && core_audio->recBufferList) { buffer_list_free (core_audio->recBufferList); core_audio->recBufferList = NULL; } return FALSE; }