diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2007-05-21 21:48:07 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2007-05-21 21:48:07 +0000 |
commit | e645e3d2f67349a04aa297f1070f5afcb4ca991c (patch) | |
tree | fe9010c932b877c5bddcb912ffa7314fbd5f14d6 | |
parent | 51424c0da5c2dabf15c414905a5b396790d6ff52 (diff) | |
download | gstreamer-e645e3d2f67349a04aa297f1070f5afcb4ca991c.tar.gz |
libs/gst/controller/gstinterpolation.c: Add support for retrieving value arrays when using the trigger interpolation ...
Original commit message from CVS:
* libs/gst/controller/gstinterpolation.c:
(interpolate_trigger_get_enum_value_array),
(interpolate_trigger_get_string_value_array):
Add support for retrieving value arrays when using the trigger
interpolation mode.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | libs/gst/controller/gstinterpolation.c | 74 |
2 files changed, 71 insertions, 11 deletions
@@ -1,5 +1,13 @@ 2007-05-21 Sebastian Dröge <slomo@circular-chaos.org> + * libs/gst/controller/gstinterpolation.c: + (interpolate_trigger_get_enum_value_array), + (interpolate_trigger_get_string_value_array): + Add support for retrieving value arrays when using the trigger + interpolation mode. + +2007-05-21 Sebastian Dröge <slomo@circular-chaos.org> + * libs/gst/controller/gstcontroller.c: (gst_controller_get_value_array): * libs/gst/controller/gstcontroller.h: diff --git a/libs/gst/controller/gstinterpolation.c b/libs/gst/controller/gstinterpolation.c index c7c4c79b23..e652e4dbb1 100644 --- a/libs/gst/controller/gstinterpolation.c +++ b/libs/gst/controller/gstinterpolation.c @@ -190,32 +190,84 @@ interpolate_trigger_get (GstControlledProperty * prop, GstClockTime timestamp) return (&prop->default_value); } +#define DEFINE_TRIGGER_GET(type) \ +static gboolean \ +interpolate_trigger_get_##type##_value_array (GstControlledProperty * prop, \ + GstClockTime timestamp, GstValueArray * value_array) \ +{ \ + gint i; \ + GstClockTime ts = timestamp; \ + g##type *values = (g##type *) value_array->values; \ + \ + for(i = 0; i < value_array->nbsamples; i++) { \ + *values = g_value_get_##type (interpolate_trigger_get (prop,ts)); \ + ts += value_array->sample_interval; \ + values++; \ + } \ + return (TRUE); \ +} + +DEFINE_TRIGGER_GET (int); +DEFINE_TRIGGER_GET (uint); +DEFINE_TRIGGER_GET (long); + +DEFINE_TRIGGER_GET (ulong); +DEFINE_TRIGGER_GET (float); +DEFINE_TRIGGER_GET (double); + +DEFINE_TRIGGER_GET (boolean); + +static gboolean +interpolate_trigger_get_enum_value_array (GstControlledProperty * prop, + GstClockTime timestamp, GstValueArray * value_array) +{ + gint i; + GstClockTime ts = timestamp; + gint *values = (gint *) value_array->values; + + for (i = 0; i < value_array->nbsamples; i++) { + *values = g_value_get_enum (interpolate_trigger_get (prop, ts)); + ts += value_array->sample_interval; + values++; + } + return (TRUE); +} + static gboolean -interpolate_trigger_get_value_array (GstControlledProperty * prop, +interpolate_trigger_get_string_value_array (GstControlledProperty * prop, GstClockTime timestamp, GstValueArray * value_array) { - return (FALSE); + 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_trigger_get (prop, ts)); + ts += value_array->sample_interval; + values++; + } + return (TRUE); } static GstInterpolateMethod interpolate_trigger = { interpolate_trigger_get, - interpolate_trigger_get_value_array, + interpolate_trigger_get_int_value_array, interpolate_trigger_get, - NULL, + interpolate_trigger_get_uint_value_array, interpolate_trigger_get, - NULL, + interpolate_trigger_get_long_value_array, interpolate_trigger_get, - NULL, + interpolate_trigger_get_ulong_value_array, interpolate_trigger_get, - NULL, + interpolate_trigger_get_float_value_array, interpolate_trigger_get, - NULL, + interpolate_trigger_get_double_value_array, interpolate_trigger_get, - NULL, + interpolate_trigger_get_boolean_value_array, interpolate_trigger_get, - NULL, + interpolate_trigger_get_enum_value_array, interpolate_trigger_get, - NULL + interpolate_trigger_get_string_value_array }; /* linear interpolation */ |