libs/gst/controller/: make G_TYPE_STRING controlable

Original commit message from CVS:
* libs/gst/controller/gstcontroller.c:
(gst_controlled_property_set_interpolation_mode),
(gst_controlled_property_new):
* libs/gst/controller/gstcontroller.h:
* libs/gst/controller/gstinterpolation.c:
(interpolate_none_get_string_value_array):
make G_TYPE_STRING controlable
This commit is contained in:
Stefan Kost 2006-01-12 21:55:42 +00:00
parent 334b141a32
commit ff3b09e189
4 changed files with 45 additions and 1 deletions

View file

@ -1,3 +1,13 @@
2006-01-12 Stefan Kost <ensonic@users.sf.net>
* libs/gst/controller/gstcontroller.c:
(gst_controlled_property_set_interpolation_mode),
(gst_controlled_property_new):
* libs/gst/controller/gstcontroller.h:
* libs/gst/controller/gstinterpolation.c:
(interpolate_none_get_string_value_array):
make G_TYPE_STRING controlable
2006-01-12 Stefan Kost <ensonic@users.sf.net>
* tools/README:

View file

@ -213,6 +213,11 @@ gst_controlled_property_set_interpolation_mode (GstControlledProperty * self,
self->get_value_array =
interpolation_methods[mode]->get_enum_value_array;
break;
case G_TYPE_STRING:
self->get = interpolation_methods[mode]->get_string;
self->get_value_array =
interpolation_methods[mode]->get_string_value_array;
break;
default:
self->get = NULL;
self->get_value_array = NULL;
@ -340,6 +345,12 @@ gst_controlled_property_new (GObject * object, const gchar * name)
g_value_set_enum (&prop->default_value, tpspec->default_value);
}
break;
case G_TYPE_STRING:{
GParamSpecString *tpspec = G_PARAM_SPEC_STRING (pspec);
g_value_set_string (&prop->default_value, tpspec->default_value);
}
break;
default:
GST_WARNING ("incomplete implementation for paramspec type '%s'",
G_PARAM_SPEC_TYPE_NAME (pspec));

View file

@ -131,6 +131,8 @@ typedef struct _GstInterpolateMethod
InterpolateGetValueArray get_boolean_value_array;
InterpolateGet get_enum;
InterpolateGetValueArray get_enum_value_array;
InterpolateGet get_string;
InterpolateGetValueArray get_string_value_array;
} GstInterpolateMethod;
/**

View file

@ -135,6 +135,21 @@ interpolate_none_get_enum_value_array (GstControlledProperty * prop,
return (TRUE);
}
static gboolean
interpolate_none_get_string_value_array (GstControlledProperty * prop,
GstClockTime timestamp, GstValueArray * value_array)
{
gint i;
GstClockTime ts = timestamp;
gchar **values = (gchar **) value_array->values;
for (i = 0; i < value_array->nbsamples; i++) {
*values = (gchar *) g_value_get_string (interpolate_none_get (prop, ts));
ts += value_array->sample_interval;
values++;
}
return (TRUE);
}
static GstInterpolateMethod interpolate_none = {
interpolate_none_get,
@ -152,7 +167,9 @@ static GstInterpolateMethod interpolate_none = {
interpolate_none_get,
interpolate_none_get_boolean_value_array,
interpolate_none_get,
interpolate_none_get_enum_value_array
interpolate_none_get_enum_value_array,
interpolate_none_get,
interpolate_none_get_string_value_array
};
/* returns the default value of the property, except for times with specific values */
@ -198,6 +215,8 @@ static GstInterpolateMethod interpolate_trigger = {
interpolate_trigger_get,
NULL,
interpolate_trigger_get,
NULL,
interpolate_trigger_get,
NULL
};
@ -282,6 +301,8 @@ static GstInterpolateMethod interpolate_linear = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
};