void ags_switch_buffer_flag_launch(AgsTask *task) { AgsSwitchBufferFlag *switch_buffer_flag; switch_buffer_flag = AGS_SWITCH_BUFFER_FLAG(task); /* switch buffer flag */ if(AGS_IS_DEVOUT(switch_buffer_flag->device)){ ags_devout_switch_buffer_flag((AgsDevout *) switch_buffer_flag->device); }else if(AGS_IS_DEVIN(switch_buffer_flag->device)){ ags_devin_switch_buffer_flag((AgsDevin *) switch_buffer_flag->device); }else if(AGS_IS_JACK_DEVOUT(switch_buffer_flag->device)){ ags_jack_devout_switch_buffer_flag((AgsJackDevout *) switch_buffer_flag->device); }else if(AGS_IS_JACK_DEVIN(switch_buffer_flag->device)){ ags_jack_devin_switch_buffer_flag((AgsJackDevin *) switch_buffer_flag->device); }else if(AGS_IS_PULSE_DEVOUT(switch_buffer_flag->device)){ ags_pulse_devout_switch_buffer_flag((AgsPulseDevout *) switch_buffer_flag->device); }else if(AGS_IS_PULSE_DEVIN(switch_buffer_flag->device)){ ags_pulse_devin_switch_buffer_flag((AgsPulseDevin *) switch_buffer_flag->device); }else if(AGS_IS_CORE_AUDIO_DEVOUT(switch_buffer_flag->device)){ ags_core_audio_devout_switch_buffer_flag((AgsCoreAudioDevout *) switch_buffer_flag->device); }else if(AGS_IS_CORE_AUDIO_DEVIN(switch_buffer_flag->device)){ ags_core_audio_devin_switch_buffer_flag((AgsCoreAudioDevin *) switch_buffer_flag->device); }else if(AGS_IS_MIDIIN(switch_buffer_flag->device)){ ags_midiin_switch_buffer_flag((AgsMidiin *) switch_buffer_flag->device); }else if(AGS_IS_JACK_MIDIIN(switch_buffer_flag->device)){ ags_jack_midiin_switch_buffer_flag((AgsJackMidiin *) switch_buffer_flag->device); }else if(AGS_IS_CORE_AUDIO_MIDIIN(switch_buffer_flag->device)){ ags_core_audio_midiin_switch_buffer_flag((AgsCoreAudioMidiin *) switch_buffer_flag->device); } }
/** * ags_soundcard_util_get_obj_mutex: * @soundcard: the #GObject sub-type implementing #AgsSoundcard * * Get object mutex of @soundcard. * * Returns: pthread_mutex_t pointer * * Since: 2.0.0 */ pthread_mutex_t* ags_soundcard_util_get_obj_mutex(GObject *soundcard) { pthread_mutex_t *obj_mutex; obj_mutex = NULL; if(AGS_IS_DEVOUT(soundcard)){ pthread_mutex_lock(ags_devout_get_class_mutex()); obj_mutex = AGS_DEVOUT(soundcard)->obj_mutex; pthread_mutex_unlock(ags_devout_get_class_mutex()); }else if(AGS_IS_JACK_DEVOUT(soundcard)){ pthread_mutex_lock(ags_jack_devout_get_class_mutex()); obj_mutex = AGS_JACK_DEVOUT(soundcard)->obj_mutex; pthread_mutex_unlock(ags_jack_devout_get_class_mutex()); }else if(AGS_IS_CORE_AUDIO_DEVOUT(soundcard)){ pthread_mutex_lock(ags_core_audio_devout_get_class_mutex()); obj_mutex = AGS_CORE_AUDIO_DEVOUT(soundcard)->obj_mutex; pthread_mutex_unlock(ags_core_audio_devout_get_class_mutex()); }else{ g_warning("unknown soundcard implementation"); } return(obj_mutex); }
void ags_devout_tic(AgsDevout *devout) { g_return_if_fail(AGS_IS_DEVOUT(devout)); if((AGS_DEVOUT_PLAY & devout->flags) == 0){ g_message("ags_devout_tic: not playing\0"); return; } g_object_ref((GObject *) devout); g_signal_emit(G_OBJECT(devout), devout_signals[TIC], 0); g_object_unref((GObject *) devout); }
void ags_set_samplerate_launch(AgsTask *task) { AgsSetSamplerate *set_samplerate; GObject *gobject; set_samplerate = AGS_SET_SAMPLERATE(task); gobject = set_samplerate->gobject; if(AGS_IS_DEVOUT(gobject)){ ags_set_samplerate_devout(set_samplerate, AGS_DEVOUT(gobject)); }else if(AGS_IS_AUDIO(gobject)){ ags_set_samplerate_audio(set_samplerate, AGS_AUDIO(gobject)); }else if(AGS_IS_CHANNEL(gobject)){ ags_set_samplerate_channel(set_samplerate, AGS_CHANNEL(gobject)); }else if(AGS_IS_RECYCLING(gobject)){ ags_set_samplerate_recycling(set_samplerate, AGS_RECYCLING(gobject)); }else if(AGS_IS_AUDIO_SIGNAL(gobject)){ ags_set_samplerate_audio_signal(set_samplerate, AGS_AUDIO_SIGNAL(gobject)); } }
void ags_set_buffer_size_launch(AgsTask *task) { AgsSetBufferSize *set_buffer_size; GObject *gobject; set_buffer_size = AGS_SET_BUFFER_SIZE(task); gobject = set_buffer_size->gobject; if(AGS_IS_DEVOUT(gobject)){ ags_set_buffer_size_devout(set_buffer_size, AGS_DEVOUT(gobject)); }else if(AGS_IS_AUDIO(gobject)){ ags_set_buffer_size_audio(set_buffer_size, AGS_AUDIO(gobject)); }else if(AGS_IS_CHANNEL(gobject)){ ags_set_buffer_size_channel(set_buffer_size, AGS_CHANNEL(gobject)); }else if(AGS_IS_RECYCLING(gobject)){ ags_set_buffer_size_recycling(set_buffer_size, AGS_RECYCLING(gobject)); }else if(AGS_IS_AUDIO_SIGNAL(gobject)){ ags_set_buffer_size_audio_signal(set_buffer_size, AGS_AUDIO_SIGNAL(gobject)); } }
void ags_soundcard_thread_set_property(GObject *gobject, guint prop_id, const GValue *value, GParamSpec *param_spec) { AgsSoundcardThread *soundcard_thread; soundcard_thread = AGS_SOUNDCARD_THREAD(gobject); switch(prop_id){ case PROP_SOUNDCARD: { GObject *soundcard; guint samplerate; guint buffer_size; soundcard = (GObject *) g_value_get_object(value); if(soundcard_thread->soundcard != NULL){ g_object_unref(G_OBJECT(soundcard_thread->soundcard)); } if(soundcard != NULL){ g_object_ref(G_OBJECT(soundcard)); ags_soundcard_get_presets(AGS_SOUNDCARD(soundcard), NULL, &samplerate, &buffer_size, NULL); g_object_set(soundcard_thread, "frequency", ceil((gdouble) samplerate / (gdouble) buffer_size) + AGS_SOUNDCARD_DEFAULT_OVERCLOCK, NULL); /* playback */ if(AGS_IS_DEVOUT(soundcard)){ g_atomic_int_or(&(AGS_THREAD(soundcard_thread)->flags), (AGS_THREAD_INTERMEDIATE_POST_SYNC)); }else if(AGS_IS_JACK_DEVOUT(soundcard) || AGS_IS_PULSE_DEVOUT(soundcard)){ g_atomic_int_or(&(AGS_THREAD(soundcard_thread)->flags), (AGS_THREAD_INTERMEDIATE_POST_SYNC)); }else if(AGS_IS_CORE_AUDIO_DEVOUT(soundcard)){ g_atomic_int_or(&(AGS_THREAD(soundcard_thread)->flags), (AGS_THREAD_INTERMEDIATE_POST_SYNC)); } /* capture */ if(AGS_IS_DEVIN(soundcard)){ g_atomic_int_or(&(AGS_THREAD(soundcard_thread)->flags), (AGS_THREAD_INTERMEDIATE_PRE_SYNC)); }else if(AGS_IS_JACK_DEVIN(soundcard) || AGS_IS_PULSE_DEVIN(soundcard)){ g_atomic_int_or(&(AGS_THREAD(soundcard_thread)->flags), (AGS_THREAD_INTERMEDIATE_PRE_SYNC)); }else if(AGS_IS_CORE_AUDIO_DEVIN(soundcard)){ g_atomic_int_or(&(AGS_THREAD(soundcard_thread)->flags), (AGS_THREAD_INTERMEDIATE_PRE_SYNC)); } /* duplex */ //TODO:JK: implement me } soundcard_thread->soundcard = G_OBJECT(soundcard); } break; case PROP_SOUNDCARD_CAPABILITY: { soundcard_thread->soundcard_capability = g_value_get_uint(value); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, param_spec); break; } }