cdaudio: fix properties

Fix properties and allow setting the device property.
This commit is contained in:
Wim Taymans 2009-11-04 15:57:40 +01:00
parent 4c625bd569
commit 6095ea02c4

View file

@ -66,15 +66,22 @@ struct _GstCDAudioClass
void (*track_change) (GstElement * element, guint track); void (*track_change) (GstElement * element, guint track);
}; };
#define DEFAULT_DEVICE "/dev/cdrom"
#define DEFAULT_VOLUME_FR 255
#define DEFAULT_VOLUME_FL 255
#define DEFAULT_VOLUME_BR 255
#define DEFAULT_VOLUME_BL 255
/* props */ /* props */
enum enum
{ {
ARG_0, PROP_0,
ARG_DEVICE, PROP_DEVICE,
ARG_VOLUME_FR, PROP_VOLUME_FR,
ARG_VOLUME_FL, PROP_VOLUME_FL,
ARG_VOLUME_BR, PROP_VOLUME_BR,
ARG_VOLUME_BL PROP_VOLUME_BL,
PROP_LAST
}; };
/* signals */ /* signals */
@ -157,19 +164,19 @@ gst_cdaudio_class_init (GstCDAudioClass * klass)
gobject_klass->set_property = gst_cdaudio_set_property; gobject_klass->set_property = gst_cdaudio_set_property;
gobject_klass->get_property = gst_cdaudio_get_property; gobject_klass->get_property = gst_cdaudio_get_property;
g_object_class_install_property (gobject_klass, ARG_DEVICE, g_object_class_install_property (gobject_klass, PROP_DEVICE,
g_param_spec_string ("device", "Device", "CDROM device", g_param_spec_string ("device", "Device", "CDROM device",
NULL, G_PARAM_READWRITE)); NULL, G_PARAM_READWRITE));
g_object_class_install_property (gobject_klass, ARG_VOLUME_FL, g_object_class_install_property (gobject_klass, PROP_VOLUME_FL,
g_param_spec_int ("volume_fl", "Volume fl", "Front left volume", g_param_spec_int ("volume_fl", "Volume fl", "Front left volume",
0, 255, 255, G_PARAM_READWRITE)); 0, 255, 255, G_PARAM_READWRITE));
g_object_class_install_property (gobject_klass, ARG_VOLUME_FR, g_object_class_install_property (gobject_klass, PROP_VOLUME_FR,
g_param_spec_int ("volume_fr", "Volume fr", "Front right volume", g_param_spec_int ("volume_fr", "Volume fr", "Front right volume",
0, 255, 255, G_PARAM_READWRITE)); 0, 255, 255, G_PARAM_READWRITE));
g_object_class_install_property (gobject_klass, ARG_VOLUME_BL, g_object_class_install_property (gobject_klass, PROP_VOLUME_BL,
g_param_spec_int ("volume_bl", "Volume bl", "Back left volume", g_param_spec_int ("volume_bl", "Volume bl", "Back left volume",
0, 255, 255, G_PARAM_READWRITE)); 0, 255, 255, G_PARAM_READWRITE));
g_object_class_install_property (gobject_klass, ARG_VOLUME_BR, g_object_class_install_property (gobject_klass, PROP_VOLUME_BR,
g_param_spec_int ("volume_br", "Volume br", "Back right volume", g_param_spec_int ("volume_br", "Volume br", "Back right volume",
0, 255, 255, G_PARAM_READWRITE)); 0, 255, 255, G_PARAM_READWRITE));
@ -192,7 +199,12 @@ gst_cdaudio_class_init (GstCDAudioClass * klass)
static void static void
gst_cdaudio_init (GstCDAudio * cdaudio, GstCDAudioClass * g_class) gst_cdaudio_init (GstCDAudio * cdaudio, GstCDAudioClass * g_class)
{ {
cdaudio->device = g_strdup ("/dev/cdrom"); cdaudio->device = g_strdup (DEFAULT_DEVICE);
cdaudio->volume.vol_front.right = DEFAULT_VOLUME_FR;
cdaudio->volume.vol_front.left = DEFAULT_VOLUME_FL;
cdaudio->volume.vol_back.right = DEFAULT_VOLUME_BR;
cdaudio->volume.vol_back.left = DEFAULT_VOLUME_BL;
cdaudio->was_playing = FALSE; cdaudio->was_playing = FALSE;
cdaudio->timer = g_timer_new (); cdaudio->timer = g_timer_new ();
@ -219,15 +231,21 @@ gst_cdaudio_set_property (GObject * object, guint prop_id, const GValue * value,
cdaudio = GST_CDAUDIO (object); cdaudio = GST_CDAUDIO (object);
switch (prop_id) { switch (prop_id) {
case ARG_DEVICE: case PROP_DEVICE:
g_free (cdaudio->device);
cdaudio->device = g_value_dup_string (value);
break; break;
case ARG_VOLUME_FR: case PROP_VOLUME_FR:
cdaudio->volume.vol_front.right = g_value_get_int (value);
break; break;
case ARG_VOLUME_FL: case PROP_VOLUME_FL:
cdaudio->volume.vol_front.left = g_value_get_int (value);
break; break;
case ARG_VOLUME_BR: case PROP_VOLUME_BR:
cdaudio->volume.vol_back.right = g_value_get_int (value);
break; break;
case ARG_VOLUME_BL: case PROP_VOLUME_BL:
cdaudio->volume.vol_back.left = g_value_get_int (value);
break; break;
default: default:
break; break;
@ -243,19 +261,19 @@ gst_cdaudio_get_property (GObject * object, guint prop_id, GValue * value,
cdaudio = GST_CDAUDIO (object); cdaudio = GST_CDAUDIO (object);
switch (prop_id) { switch (prop_id) {
case ARG_DEVICE: case PROP_DEVICE:
g_value_set_string (value, cdaudio->device); g_value_set_string (value, cdaudio->device);
break; break;
case ARG_VOLUME_FR: case PROP_VOLUME_FR:
g_value_set_int (value, cdaudio->volume.vol_front.right); g_value_set_int (value, cdaudio->volume.vol_front.right);
break; break;
case ARG_VOLUME_FL: case PROP_VOLUME_FL:
g_value_set_int (value, cdaudio->volume.vol_front.left); g_value_set_int (value, cdaudio->volume.vol_front.left);
break; break;
case ARG_VOLUME_BR: case PROP_VOLUME_BR:
g_value_set_int (value, cdaudio->volume.vol_back.right); g_value_set_int (value, cdaudio->volume.vol_back.right);
break; break;
case ARG_VOLUME_BL: case PROP_VOLUME_BL:
g_value_set_int (value, cdaudio->volume.vol_back.left); g_value_set_int (value, cdaudio->volume.vol_back.left);
break; break;
default: default:
@ -573,6 +591,7 @@ cdaudio_uri_get_type (void)
{ {
return GST_URI_SRC; return GST_URI_SRC;
} }
static gchar ** static gchar **
cdaudio_uri_get_protocols (void) cdaudio_uri_get_protocols (void)
{ {
@ -580,6 +599,7 @@ cdaudio_uri_get_protocols (void)
return protocols; return protocols;
} }
static const gchar * static const gchar *
cdaudio_uri_get_uri (GstURIHandler * handler) cdaudio_uri_get_uri (GstURIHandler * handler)
{ {