Invalid property's type for a controller at runtime: `G_VALUE_TYPE (value) == self->priv->type' failed

Rossana Guerra guerra.rossana at gmail.com
Thu Oct 27 15:40:53 PDT 2011


Sorry Stefan, where is the code to compare with?..I downloaded the doc (pdf)
and the order remains the same.
Regards and thanks


2011/10/27 Stefan Sauer <ensonic at hora-obscura.de>

> **
> Hi,
> On 10/27/2011 01:37 AM, Rossana Guerra wrote:
>
> Well the error type disappeared, it was due where the place the
> gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE
> (csource)) sentence was.
> The first time I did it according the documentation, at the end of the
> value sets of the control source. It seems it isn't the right place, I
> changed the sentences right after creating the controller, it seems it
> works. Hope it helps someone else.
>
> I fix the wrong order of calls in the docs.
>
>  In this way:
>
>
> I made a few more fixes - compare your source and mine in a diff viewer
> (e.g. meld). You still need to do more stuff to ensure both sources can be
> mixed (run it as GST_DEBUG="*:2" ./ctrl <file1> <file2> to see the
> warnings).
>
> Stefan
>
>
> GstInterpolationControlSource * csource =
> gst_interpolation_control_source_new();
>
>
> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);
> gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE
> (csource));
>
> (Now the runtime is another! but one less at least)
>
> Specially thanks to Stefan!
>
>
> Here is the complete code:
>
> #include <gst.h>
> #include <controller/gstcontroller.h>
>
> #include <iostream>
> #include <string.h>
>
> using namespace std;
>
> // Manejador de errores
> static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data)
> {
>     GMainLoop *loop = (GMainLoop *) data;
>
>     switch (GST_MESSAGE_TYPE (msg))
>     {
>     case GST_MESSAGE_EOS:
>         g_print ("Final de stream\n");
>         g_main_loop_quit (loop);
>         break;
>     case GST_MESSAGE_ERROR:
>     {
>         gchar *debug;
>         GError *error;
>         gst_message_parse_error (msg, &error, &debug);
>         g_free (debug);
>         g_printerr ("Error: %s\n", error->message);
>         g_error_free (error);
>         g_main_loop_quit (loop);
>         break;
>     }
>     default:
>         break;
>     }
>     return TRUE;
> }
>
> static void on_pad_added (GstElement *element, GstPad *pad, gpointer  data)
> {
>   GstPad *sinkpad = NULL;
>   GstElement * elemento = (GstElement *) data;
>
>
>   /* Ahora linkeo el pad de comp con sink pad */
>   g_print ("Dynamic pad created, linking queue\n");
>   sinkpad = gst_element_get_static_pad (elemento, "sink");
>
>
>   gst_pad_link (pad, sinkpad);
>   gst_object_unref(sinkpad);
>
> }
>
> int main(int argc, char *argv[])
> {
>
>   GMainLoop *loop = NULL;
>
>   GstElement *src1, *src2,*dec1,*dec2,*alfa1,*color,*smpte,*queue,*sink;
>   GstBus *bus;
>
>   gdouble duracion = 500.0;
>   gint transicion = 1;
>
>   cout << "Inicio..." << endl;
>
>     /* init GStreamer */
>   gst_init (&argc, &argv);
>   bool iniciado = gst_controller_init (&argc, &argv);
>
>    loop = g_main_loop_new (NULL, FALSE);
>   //gint transicion = 1;
>
>   /* make sure we have input */
>   if (argc != 3) {
>     g_print ("Usage: %s <filename1> <filename2>\n", argv[0]);
>     return -1;
>   }
>
>   cout << "Creando..." << endl;
>   src1 = gst_element_factory_make("filesrc", "src1");
>   g_object_set(G_OBJECT(src1),"location",argv[1], NULL);
>
>   src2 = gst_element_factory_make("filesrc", "src2");
>   g_object_set(G_OBJECT(src1),"location",argv[2], NULL);
>
>   GstElement *pipeline = gst_pipeline_new ("video-player");
>
>   dec1 = gst_element_factory_make("decodebin2","dec1");
>
>   dec2 = gst_element_factory_make("decodebin2","dec2");
>
>   cout << "Creando pipeline..." << endl;
>
>   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
>   gst_bus_add_watch (bus, bus_call, loop);
>   gst_object_unref (bus);
>
>   alfa1   = gst_element_factory_make ("alpha","alfa1");
>   smpte  = gst_element_factory_make ("smptealpha","smpte");
>   g_object_set(smpte,"type", transicion, NULL);
>   color  = gst_element_factory_make ("ffmpegcolorspace", "color");
>   GstElement * mixer  = gst_element_factory_make("videomixer", "mixer");
>
>   if ((!alfa1) || (!smpte) || (!color) || (!mixer))
>   {
>       g_printerr ("Alguno de los elementos del Bin no pudo ser creado.
> Saliendo\n");
>      return 0;
>   }
>
>
>   cout << "Creando 1..." << endl;
>
>   // Agrego Controlador
>
>   GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte),
> "position",NULL);
>
>   if (ctrl == NULL)
>   {
>         GST_WARNING ("No puede controlar el elemento fuente\n");
>         return 1;
>   }
>
>   // Todo valor GValue debe inicializarse en 0
>   GValue val_double = { 0, };
>   g_value_init (&val_double, G_TYPE_DOUBLE);
>
>   // Creo la fuente al controlador y la asocio al controlador
>   // Seteo modo de interpolacion
>
>   GstInterpolationControlSource * csource =
> gst_interpolation_control_source_new();
>
>
> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);
>   gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE
> (csource));
>
>   // Seteo primer valor
>   g_value_set_double(&val_double, 0.0);
>   gst_interpolation_control_source_set(csource,(0 *
> GST_MSECOND),&val_double);
>
>   // Seteo segundo valor
>   g_value_set_double(&val_double, 1.0);
>
> gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double);
>
>   //gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE
> (csource));
>
>   g_object_unref (csource);
>   g_value_unset (&val_double);
>
>   g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK
> (on_pad_added),alfa1);
>   g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK
> (on_pad_added),smpte);
>
>   queue = gst_element_factory_make("queue", "queue");
>   sink  = gst_element_factory_make("autovideosink", "sink");
>
>   gst_bin_add_many (GST_BIN (pipeline),src1, src2, dec1, dec2, alfa1,
> smpte, mixer, queue, color, sink, NULL);
>
>   gst_element_link (src1,dec1);
>   gst_element_link (src2,dec2);
>   gst_element_link (alfa1,mixer);
>   gst_element_link (smpte,mixer);
>   gst_element_link (mixer,queue);
>   gst_element_link (queue,sink);
>
>
>   /* now run */
>   gst_element_set_state (pipeline, GST_STATE_PLAYING);
>   cout << "Playing..." << endl;
>   g_main_loop_run (loop);
>
>     /* also clean up */
>   gst_element_set_state (pipeline, GST_STATE_NULL);
>   gst_object_unref (GST_OBJECT (pipeline));
>
>   return 0;
> }
>
>
>
>
>
>
>
>
>
>
> 2011/10/26 Rossana Guerra <guerra.rossana at gmail.com>
>
>> Sorry, I had some copy/paste errors. Here's the code, the runtime error
>> is:
>>
>>  CRITICAL **: gst_interpolation_control_source_set: assertion
>> `G_VALUE_TYPE (value) == self->priv->type' failed.
>>
>> I changed the duracion value variable unit to second (replacing 500 with
>> 5), and I tryed with GST_SECOND insted, but it didn't work.
>> So I wrote it back to GST_MSECOND.
>>
>> The code ΅without" typing errors:
>>
>>
>> #include <gst.h>
>> #include <controller/gstcontroller.h>
>>
>> #include <iostream>
>>  #include <string.h>
>>
>>
>> using namespace std;
>>
>> // Manejador de errores
>>
>> static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data)
>> {
>>     GMainLoop *loop = (GMainLoop *) data;
>>
>>     switch (GST_MESSAGE_TYPE (msg))
>>     {
>>     case GST_MESSAGE_EOS:
>>         g_print ("Final de stream\n");
>>         g_main_loop_quit (loop);
>>         break;
>>     case GST_MESSAGE_ERROR:
>>     {
>>         gchar *debug;
>>         GError *error;
>>         gst_message_parse_error (msg, &error, &debug);
>>         g_free (debug);
>>         g_printerr ("Error: %s\n", error->message);
>>         g_error_free (error);
>>         g_main_loop_quit (loop);
>>         break;
>>     }
>>     default:
>>         break;
>>     }
>>     return TRUE;
>> }
>>
>> static void on_pad_added (GstElement *element, GstPad *pad, gpointer
>> data)
>> {
>>   GstPad *sinkpad = NULL;
>>   GstElement * elemento = (GstElement *) data;
>>
>>
>>   /* Ahora linkeo el pad de comp con sink pad */
>>   g_print ("Dynamic pad created, linking queue\n");
>>   sinkpad = gst_element_get_static_pad (elemento, "sink");
>>
>>
>>   gst_pad_link (pad, sinkpad);
>>   gst_object_unref(sinkpad);
>>
>> }
>>
>>
>> int main(int argc, char *argv[])
>> {
>>
>>   GMainLoop *loop = NULL;
>>
>>   GstElement *src1, *src2,*dec1,*dec2,*alfa1,*color,*smpte,*queue,*sink;
>>   GstBus *bus;
>>
>>    guint duracion = 500;
>>   gint transicion = 1;
>>
>>   cout << "Inicio..." << endl;
>>
>>
>>     /* init GStreamer */
>>   gst_init (&argc, &argv);
>>   bool iniciado = gst_controller_init (&argc, &argv);
>>
>>   loop = g_main_loop_new (NULL, FALSE);
>>
>>    if (argc != 3) {
>>     g_print ("Usage: %s <filename1> <filename2>\n", argv[0]);
>>     return -1;
>>   }
>>
>>    cout << "Creando..." << endl;
>>
>>   src1 = gst_element_factory_make("filesrc", "src1");
>>   g_object_set(G_OBJECT(src1),"location",argv[1], NULL);
>>
>>   src2 = gst_element_factory_make("filesrc", "src2");
>>   g_object_set(G_OBJECT(src1),"location",argv[2], NULL);
>>
>>   GstElement *pipeline = gst_pipeline_new ("video-player");
>>
>>   dec1 = gst_element_factory_make("decodebin2","dec1");
>>
>>   dec2 = gst_element_factory_make("decodebin2","dec2");
>>
>>   cout << "Creando pipeline..." << endl;
>>
>>   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
>>   gst_bus_add_watch (bus, bus_call, loop);
>>   gst_object_unref (bus);
>>
>>   alfa1   = gst_element_factory_make ("alpha","alfa1");
>>   smpte  = gst_element_factory_make ("smptealpha","smpte");
>>   g_object_set(smpte,"type", transicion, NULL);
>>   color  = gst_element_factory_make ("ffmpegcolorspace", "color");
>>   GstElement * mixer  = gst_element_factory_make("videomixer", "mixer");
>>
>>   if ((!alfa1) || (!smpte) || (!color) || (!mixer))
>>   {
>>       g_printerr ("Alguno de los elementos del Bin no pudo ser creado.
>> Saliendo\n");
>>      return 0;
>>   }
>>
>>
>>    // Agrego Controlador
>>
>>
>>   GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte),
>> "position",NULL);
>>
>>   if (ctrl == NULL)
>>   {
>>         GST_WARNING ("No puede controlar el elemento fuente\n");
>>         return 1;
>>   }
>>
>>   // Todo valor GValue debe inicializarse en 0
>>    GValue val_int = { 0, };
>>   g_value_init (&val_int, G_TYPE_INT);
>>
>>
>>   // Set interpolation mode
>>
>>   GstInterpolationControlSource * csource =
>> gst_interpolation_control_source_new();
>>
>>
>> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);
>>
>>   // Seteo primer valor
>>    g_value_set_int(&val_int, 0);
>>   gst_interpolation_control_source_set(csource,(0 *
>> GST_MSECOND),&val_int);
>>
>>   // Seteo segundo valor
>>   g_value_set_int (&val_int, 1);
>>
>> gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_int);
>>
>>
>>
>>   gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE
>> (csource));
>>
>>   g_object_unref (csource);
>>    g_value_unset (&val_int);
>>
>>
>>   g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK
>> (on_pad_added),alfa1);
>>   g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK
>> (on_pad_added),smpte);
>>
>>   queue = gst_element_factory_make("queue", "queue");
>>   sink  = gst_element_factory_make("autovideosink", "sink");
>>
>>   gst_bin_add_many (GST_BIN (pipeline),src1, src2, dec1, dec2, alfa1,
>> smpte, mixer, queue, color, sink, NULL);
>>
>>   gst_element_link (src1,dec1);
>>   gst_element_link (src2,dec2);
>>   gst_element_link (alfa1,mixer);
>>   gst_element_link (smpte,mixer);
>>   gst_element_link (mixer,queue);
>>   gst_element_link (queue,sink);
>>
>>
>>   /* now run */
>>   gst_element_set_state (pipeline, GST_STATE_PLAYING);
>>   cout << "Playing..." << endl;
>>   g_main_loop_run (loop);
>>
>>     /* also clean up */
>>   gst_element_set_state (pipeline, GST_STATE_NULL);
>>   gst_object_unref (GST_OBJECT (pipeline));
>>
>>   return 0;
>> }
>>
>>
>>
>>
>>
>>
>>
>>
>>   2011/10/26 Rossana Guerra <guerra.rossana at gmail.com>
>>
>>> Where it says guint duration = 500.0 it should say guint duration = 500.
>>> Nonetheless, the error persists.
>>>
>>>
>>> 2011/10/26 Rossana Guerra <guerra.rossana at gmail.com>
>>>
>>>> HI Stefan, thanks for your help, I changed the variable type from
>>>> gdouble to guint, same error.
>>>>
>>>> Here's the whole code example:
>>>>
>>>>
>>>> #include <gst.h>
>>>> #include <controller/gstcontroller.h>
>>>> #include <iostream>
>>>>
>>>>
>>>> using namespace std;
>>>>
>>>> // Error handler
>>>> static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data)
>>>> {
>>>>     GMainLoop *loop = (GMainLoop *) data;
>>>>
>>>>     switch (GST_MESSAGE_TYPE (msg))
>>>>     {
>>>>     case GST_MESSAGE_EOS:
>>>>         g_print ("Final de stream\n");
>>>>         g_main_loop_quit (loop);
>>>>         break;
>>>>     case GST_MESSAGE_ERROR:
>>>>     {
>>>>         gchar *debug;
>>>>         GError *error;
>>>>         gst_message_parse_error (msg, &error, &debug);
>>>>         g_free (debug);
>>>>         g_printerr ("Error: %s\n", error->message);
>>>>         g_error_free (error);
>>>>         g_main_loop_quit (loop);
>>>>         break;
>>>>     }
>>>>     default:
>>>>         break;
>>>>     }
>>>>     return TRUE;
>>>> }
>>>>
>>>> static void on_pad_added (GstElement *element, GstPad *pad, gpointer
>>>> data)
>>>> {
>>>>   GstPad *sinkpad = NULL;
>>>>   GstElement * elemento = (GstElement *) data;
>>>>
>>>>
>>>>   /* Ahora linkeo el pad de comp con sink pad */
>>>>   g_print ("Dynamic pad created, linking queue\n");
>>>>   sinkpad = gst_element_get_static_pad (elemento, "sink");
>>>>
>>>>
>>>>   gst_pad_link (pad, sinkpad);
>>>>   gst_object_unref(sinkpad);
>>>>
>>>> }
>>>>
>>>>
>>>> int main(int argc, char *argv[])
>>>> {
>>>>
>>>>   GMainLoop *loop = NULL;
>>>>
>>>>   GstElement *src1, *src2,*dec1,*dec2,*alfa1,*color,*smpte,*queue,*sink;
>>>>   GstBus *bus;
>>>>
>>>>   guint duracion = 500.0;
>>>>   guint transicion = 1;
>>>>
>>>>
>>>>     /* init GStreamer */
>>>>   gst_init (&argc, &argv);
>>>>   bool iniciado = gst_controller_init (&argc, &argv);
>>>>
>>>>
>>>>
>>>>   loop = g_main_loop_new (NULL, FALSE);
>>>>
>>>>   /* make sure we have input */
>>>>   if (argc != 3) {
>>>>     g_print ("Usage: %s <filename1> <filename2>\n", argv[0]);
>>>>     return -1;
>>>>   }
>>>>
>>>>   src1 = gst_element_factory_make("filesrc", "src1");
>>>>   g_object_set(G_OBJECT(src1),"location",argv[1], NULL);
>>>>
>>>>   src2 = gst_element_factory_make("filesrc", "src2");
>>>>   g_object_set(G_OBJECT(src1),"location",argv[2], NULL);
>>>>
>>>>   GstElement *pipeline = gst_pipeline_new ("video-player");
>>>>
>>>>   dec1 = gst_element_factory_make("decodebin2","dec1");
>>>>
>>>>   dec2 = gst_element_factory_make("decodebin2","dec2");
>>>>
>>>>   cout << "Creando pipeline..." << endl;
>>>>
>>>>   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
>>>>   gst_bus_add_watch (bus, bus_call, loop);
>>>>   gst_object_unref (bus);
>>>>
>>>>   alfa1   = gst_element_factory_make ("alpha","alfa1");
>>>>   smpte  = gst_element_factory_make ("smptealpha","smpte");
>>>>   g_object_set(smpte,"type", transicion, NULL);
>>>>   color  = gst_element_factory_make ("ffmpegcolorspace", "color");
>>>>   GstElement * mixer  = gst_element_factory_make("videomixer", "mixer");
>>>>
>>>>   if ((!alfa1) || (!smpte) || (!color) || (!mixer))
>>>>   {
>>>>       g_printerr ("Alguno de los elementos del Bin no pudo ser creado.
>>>> Saliendo\n");
>>>>      return 0;
>>>>   }
>>>>
>>>>
>>>>   // Controller creation
>>>>
>>>>
>>>>   GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte),
>>>> "position",NULL);
>>>>
>>>>   if (ctrl == NULL)
>>>>   {
>>>>         GST_WARNING ("No puede controlar el elemento fuente\n");
>>>>         return 1;
>>>>   }
>>>>
>>>>   // Todo valor GValue debe inicializarse en 0
>>>>   GValue val_double = { 0, };
>>>>   g_value_init (&val_double, G_TYPE_DOUBLE);
>>>>
>>>>    // Set interpolation mode
>>>>
>>>>
>>>>   GstInterpolationControlSource * csource =
>>>> gst_interpolation_control_source_new();
>>>>
>>>>
>>>> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);
>>>>
>>>>   // Seteo primer valor
>>>>   g_value_set_double(&val_double, 0.0);
>>>>   gst_interpolation_control_source_set(csource,(0 *
>>>> GST_MSECOND),&val_double);
>>>>
>>>>   // Seteo segundo valor
>>>>   g_value_set_double (&val_double, 1.0);
>>>>
>>>> gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double);
>>>>
>>>>   gst_controller_set_control_source (ctrl, "position",
>>>> GST_CONTROL_SOURCE (csource));
>>>>
>>>>   g_object_unref (csource);
>>>>   g_value_unset (&val_double);
>>>>
>>>>    g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK
>>>> (on_pad_added),alfa1);
>>>>   g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK
>>>> (on_pad_added),smpte);
>>>>
>>>>   queue = gst_element_factory_make("queue", "queue");
>>>>   sink  = gst_element_factory_make("autovideosink", "sink");
>>>>
>>>>   gst_bin_add_many (GST_BIN (pipeline),src1, src2, dec1, dec2, alfa1,
>>>> smpte, mixer, queue, color, sink, NULL);
>>>>
>>>>   gst_element_link (src1,dec1);
>>>>   gst_element_link (src2,dec2);
>>>>   gst_element_link (alfa1,mixer);
>>>>   gst_element_link (smpte,mixer);
>>>>   gst_element_link (mixer,queue);
>>>>   gst_element_link (queue,sink);
>>>>
>>>>
>>>>   /* now run */
>>>>   gst_element_set_state (pipeline, GST_STATE_PLAYING);
>>>>   cout << "Playing..." << endl;
>>>>   g_main_loop_run (loop);
>>>>
>>>>     /* also clean up */
>>>>   gst_element_set_state (pipeline, GST_STATE_NULL);
>>>>   gst_object_unref (GST_OBJECT (pipeline));
>>>>
>>>>   return 0;
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 2011/10/26 Stefan Sauer <ensonic at hora-obscura.de>
>>>>
>>>>>  On 10/26/2011 03:12 AM, Rossana Guerra wrote:
>>>>>
>>>>> Hi I trying to control the position property of a smptealpha element. It
>>>>> controls the opacity of the alpha channel,
>>>>>
>>>>>  no, position controls the transition of the fade. 0.0:input1,
>>>>> 1.0:input2.
>>>>>
>>>>>   it varies from 0.0 to 1.0.
>>>>> The duration of this setting is 500ms.
>>>>>
>>>>> I am working around this problem, it happens at runtime, I can't figure out
>>>>> what it's wrong.
>>>>>
>>>>>
>>>>>  What is not working? The code snippet looks more of less okay. Maybe
>>>>> you can post a full standalone example.
>>>>>
>>>>> Stefan
>>>>>
>>>>>  Thanks and regards,
>>>>>
>>>>> Rossana
>>>>>
>>>>>
>>>>> Here's the code;
>>>>> _____________
>>>>>
>>>>>
>>>>> gst_interpolation_control_source_set: assertion `G_VALUE_TYPE (value) ==
>>>>> self->priv->type' failed
>>>>>
>>>>> // Agrego Controlador
>>>>>
>>>>>   gdouble duracion = 500;
>>>>>
>>>>>  guint64 duracion = 500;
>>>>>
>>>>>    GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte),
>>>>> "position",NULL);
>>>>>
>>>>>   if (ctrl == NULL)
>>>>>   {
>>>>>         GST_WARNING ("No puede controlar el elemento fuente\n");
>>>>>         return 0;
>>>>>   }
>>>>>
>>>>>
>>>>>   // Todo valor GValue debe inicializarse en 0
>>>>>   GValue val_double = { 0, };
>>>>>   g_value_init (&val_double, G_TYPE_DOUBLE);
>>>>>
>>>>>
>>>>>   // Seteo modo de interpolacion
>>>>>
>>>>>   GstInterpolationControlSource * csource =
>>>>> gst_interpolation_control_source_new();
>>>>>
>>>>>
>>>>> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);
>>>>>
>>>>>   // Seteo primer valor
>>>>>   g_value_set_double(&val_double, 0.0);
>>>>>   gst_interpolation_control_source_set(csource,(0 *
>>>>> GST_MSECOND),&val_double);
>>>>>
>>>>>   // Seteo segundo valor
>>>>>   g_value_set_double (&val_double, 1.0);
>>>>>
>>>>> gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double);
>>>>>
>>>>>   gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE
>>>>> (csource));
>>>>>
>>>>>   g_object_unref (csource);
>>>>>   g_value_unset (&val_double);
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> gstreamer-devel mailing listgstreamer-devel at lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> gstreamer-devel mailing list
>>>>> gstreamer-devel at lists.freedesktop.org
>>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>>>
>>>>>
>>>>
>>>
>>
>
> _______________________________________________
> gstreamer-devel mailing listgstreamer-devel at lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111027/21a02f8f/attachment-0001.htm>


More information about the gstreamer-devel mailing list