diff options
Diffstat (limited to 'gst-libs/gst/mixer/mixertrack.c')
-rw-r--r-- | gst-libs/gst/mixer/mixertrack.c | 81 |
1 files changed, 75 insertions, 6 deletions
diff --git a/gst-libs/gst/mixer/mixertrack.c b/gst-libs/gst/mixer/mixertrack.c index ae8976f1..756b4c07 100644 --- a/gst-libs/gst/mixer/mixertrack.c +++ b/gst-libs/gst/mixer/mixertrack.c @@ -34,10 +34,23 @@ enum LAST_SIGNAL }; +enum +{ + ARG_0, + ARG_LABEL, + ARG_MIN_VOLUME, + ARG_MAX_VOLUME, + ARG_FLAGS, + ARG_NUM_CHANNELS +}; + static void gst_mixer_track_class_init (GstMixerTrackClass * klass); static void gst_mixer_track_init (GstMixerTrack * mixer); static void gst_mixer_track_dispose (GObject * object); +static void gst_mixer_track_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); + static GObjectClass *parent_class = NULL; static guint signals[LAST_SIGNAL] = { 0 }; @@ -71,10 +84,36 @@ gst_mixer_track_get_type (void) static void gst_mixer_track_class_init (GstMixerTrackClass * klass) { - GObjectClass *object_klass = (GObjectClass *) klass; + GObjectClass *object_klass = G_OBJECT_CLASS (klass); parent_class = g_type_class_ref (G_TYPE_OBJECT); + object_klass->get_property = gst_mixer_track_get_property; + + g_object_class_install_property (object_klass, ARG_LABEL, + g_param_spec_string ("label", "Track label", + "The label assigned to the track", NULL, G_PARAM_READABLE)); + + g_object_class_install_property (object_klass, ARG_MIN_VOLUME, + g_param_spec_int ("min_volume", "Minimum volume level", + "The minimum possible volume level", G_MININT32, G_MAXINT, + 0, G_PARAM_READABLE)); + + g_object_class_install_property (object_klass, ARG_MAX_VOLUME, + g_param_spec_int ("max_volume", "Maximum volume level", + "The maximum possible volume level", G_MININT32, G_MAXINT, + 0, G_PARAM_READABLE)); + + g_object_class_install_property (object_klass, ARG_FLAGS, + g_param_spec_uint ("flags", "Flags", + "Flags indicating the type of mixer track", + 0, G_MAXUINT32, 0, G_PARAM_READABLE)); + + g_object_class_install_property (object_klass, ARG_NUM_CHANNELS, + g_param_spec_int ("num_channels", "Number of channels", + "The number of channels contained within the track", + 0, G_MAXINT, 0, G_PARAM_READABLE)); + signals[SIGNAL_RECORD_TOGGLED] = g_signal_new ("record_toggled", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, @@ -101,12 +140,42 @@ gst_mixer_track_class_init (GstMixerTrackClass * klass) } static void -gst_mixer_track_init (GstMixerTrack * channel) +gst_mixer_track_init (GstMixerTrack * mixer_track) +{ + mixer_track->label = NULL; + mixer_track->min_volume = mixer_track->max_volume = 0; + mixer_track->flags = 0; + mixer_track->num_channels = 0; +} + +static void +gst_mixer_track_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { - channel->label = NULL; - channel->min_volume = channel->max_volume = 0; - channel->flags = 0; - channel->num_channels = 0; + GstMixerTrack *mixer_track; + + mixer_track = GST_MIXER_TRACK (object); + + switch (prop_id) { + case ARG_LABEL: + g_value_set_string (value, mixer_track->label); + break; + case ARG_MIN_VOLUME: + g_value_set_int (value, mixer_track->min_volume); + break; + case ARG_MAX_VOLUME: + g_value_set_int (value, mixer_track->max_volume); + break; + case ARG_FLAGS: + g_value_set_uint (value, (guint32) mixer_track->flags); + break; + case ARG_NUM_CHANNELS: + g_value_set_int (value, mixer_track->num_channels); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } static void |