EXPORT_C #endif void gst_mixer_message_parse_record_toggled (GstMessage * message, GstMixerTrack ** track, gboolean * record) { const GstStructure *s; g_return_if_fail (gst_mixer_message_is_mixer_message (message)); g_return_if_fail (GST_MIXER_MESSAGE_HAS_TYPE (message, RECORD_TOGGLED)); s = gst_message_get_structure (message); if (track) { const GValue *v = gst_structure_get_value (s, "track"); g_return_if_fail (v != NULL); *track = (GstMixerTrack *) g_value_get_object (v); g_return_if_fail (GST_IS_MIXER_TRACK (*track)); } if (record) g_return_if_fail (gst_structure_get_boolean (s, "record", record)); }
GtkWidget* xfce_mixer_option_new (GstElement *card, GstMixerTrack *track) { XfceMixerOption *option; g_return_val_if_fail (GST_IS_MIXER (card), NULL); g_return_val_if_fail (GST_IS_MIXER_TRACK (track), NULL); option = g_object_new (TYPE_XFCE_MIXER_OPTION, NULL); option->card = card; option->track = track; xfce_mixer_option_create_contents (option); return GTK_WIDGET (option); }
EXPORT_C #endif void gst_mixer_message_parse_volume_changed (GstMessage * message, GstMixerTrack ** track, gint ** volumes, gint * num_channels) { const GstStructure *s; g_return_if_fail (gst_mixer_message_is_mixer_message (message)); g_return_if_fail (GST_MIXER_MESSAGE_HAS_TYPE (message, VOLUME_CHANGED)); s = gst_message_get_structure (message); if (track) { const GValue *v = gst_structure_get_value (s, "track"); g_return_if_fail (v != NULL); *track = (GstMixerTrack *) g_value_get_object (v); g_return_if_fail (GST_IS_MIXER_TRACK (*track)); } if (volumes || num_channels) { gint n_chans, i; const GValue *v = gst_structure_get_value (s, "volumes"); g_return_if_fail (v != NULL); g_return_if_fail (GST_VALUE_HOLDS_ARRAY (v)); n_chans = gst_value_array_get_size (v); if (num_channels) *num_channels = n_chans; if (volumes) { *volumes = g_new (gint, n_chans); for (i = 0; i < n_chans; i++) { const GValue *e = gst_value_array_get_value (v, i); g_return_if_fail (e != NULL && G_VALUE_HOLDS_INT (e)); (*volumes)[i] = g_value_get_int (e); } } } }