예제 #1
0
static OSStatus notification_callback(
		AudioObjectID id,
		UInt32 num_addresses,
		const AudioObjectPropertyAddress addresses[],
		void *data)
{
	struct coreaudio_data *ca = data;

	coreaudio_stop(ca);
	coreaudio_uninit(ca);

	if (addresses[0].mSelector == PROPERTY_DEFAULT_DEVICE)
		ca->retry_time = 300;
	else
		ca->retry_time = 2000;

	blog(LOG_INFO, "coreaudio: device '%s' disconnected or changed.  "
	               "attempting to reconnect", ca->device_name);

	coreaudio_begin_reconnect(ca);

	UNUSED_PARAMETER(id);
	UNUSED_PARAMETER(num_addresses);

	return noErr;
}
예제 #2
0
파일: coreaudio.c 프로젝트: amitkr/deadbeef
static int
coreaudio_setformat (ddb_waveformat_t *fmt) {
    trace ("coreaudio_setformat\n");
	
    memcpy (&plugin.fmt, fmt, sizeof (ddb_waveformat_t));
	
	switch (state) {
		case OUTPUT_STATE_STOPPED:
			return coreaudio_stop ();
		case OUTPUT_STATE_PLAYING:
			return coreaudio_play ();
		case OUTPUT_STATE_PAUSED:
			if (0 != coreaudio_play ()) {
				return -1;
			}
			if (0 != coreaudio_pause ()) {
				return -1;
			}
			break;
    }
	
    return 0;
	
}