Sorry Stefan, where is the code to compare with?..I downloaded the doc (pdf) and the order remains the same.<br>Regards and thanks<br><br><br><div class="gmail_quote">2011/10/27 Stefan Sauer <span dir="ltr">&lt;<a href="mailto:ensonic@hora-obscura.de">ensonic@hora-obscura.de</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><u></u>

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

Rossana


Here&#39;s the code;
_____________


gst_interpolation_control_source_set: assertion `G_VALUE_TYPE (value) ==
self-&gt;priv-&gt;type&#39; failed

// Agrego Controlador

  gdouble duracion = 500;
</pre>
                                      </blockquote>
                                    </div>
                                    guint64 duracion = 500;<br>
                                    <blockquote type="cite">
                                      <div>
                                        <pre>  GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte),
&quot;position&quot;,NULL);

  if (ctrl == NULL)
  {
        GST_WARNING (&quot;No puede controlar el elemento fuente\n&quot;);
        return 0;
  }


  // Todo valor GValue debe inicializarse en 0
  GValue val_double = { 0, };
  g_value_init (&amp;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(&amp;val_double, 0.0);
  gst_interpolation_control_source_set(csource,(0 *
GST_MSECOND),&amp;val_double);

  // Seteo segundo valor
  g_value_set_double (&amp;val_double, 1.0);

gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&amp;val_double);

  gst_controller_set_control_source (ctrl, &quot;position&quot;, GST_CONTROL_SOURCE
(csource));

  g_object_unref (csource);
  g_value_unset (&amp;val_double);

</pre>
                                      </div>
                                      <pre><fieldset></fieldset>
_______________________________________________
gstreamer-devel mailing list
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
                                    </blockquote>
                                    <br>
                                  </div>
                                  <br>
_______________________________________________<br>
                                  gstreamer-devel mailing list<br>
                                  <a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
                                  <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
                                  <br>
                                </blockquote>
                              </div>
                              <br>
                            </div>
                          </div>
                        </blockquote>
                      </div>
                      <br>
                    </div>
                  </div>
                </blockquote>
              </div>
              <br>
            </div>
          </div>
        </blockquote>
      </div>
      <br>
      <pre><fieldset></fieldset>
_______________________________________________
gstreamer-devel mailing list
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
<br></blockquote></div><br>