<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 10/28/2011 12:40 AM, Rossana Guerra wrote:
    <blockquote
cite="mid:CAAMjx-efQ445X1A0MWg_HiZ+ey16qxOcjfTRwLEakyzuS94wqQ@mail.gmail.com"
      type="cite">Sorry Stefan, where is the code to compare with?</blockquote>
    I forwarded the mail to your personal address. Out mailing list
    tried to be super smart and stipped attached *sourcecode*.<br>
    <br>
    <blockquote
cite="mid:CAAMjx-efQ445X1A0MWg_HiZ+ey16qxOcjfTRwLEakyzuS94wqQ@mail.gmail.com"
      type="cite">..I downloaded the doc (pdf) and the order remains the
      same.<br>
    </blockquote>
    I pushed the fix to the API docs to git. That does not regenerate
    the pdf. To be sure which pdf exactly are you talking about?<br>
    <br>
    Stefan<br>
    <br>
    <blockquote
cite="mid:CAAMjx-efQ445X1A0MWg_HiZ+ey16qxOcjfTRwLEakyzuS94wqQ@mail.gmail.com"
      type="cite">Regards and thanks<br>
      <br>
      <br>
      <div class="gmail_quote">2011/10/27 Stefan Sauer <span dir="ltr">&lt;<a
            moz-do-not-send="true" href="mailto:ensonic@hora-obscura.de">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"> 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, "position",
              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'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="*:2"
            ./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, "position",
              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 ("Final de stream\n");<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 ("Error: %s\n", 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 ("Dynamic pad created, linking queue\n");<br>
                sinkpad = gst_element_get_static_pad (elemento, "sink");<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; "Inicio..." &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 ("Usage: %s &lt;filename1&gt;
              &lt;filename2&gt;\n", argv[0]);<br>
                  return -1;<br>
                }<br>
              <br>
                cout &lt;&lt; "Creando..." &lt;&lt; endl;<br>
                src1 = gst_element_factory_make("filesrc", "src1");<br>
                g_object_set(G_OBJECT(src1),"location",argv[1], NULL);<br>
              <br>
                src2 = gst_element_factory_make("filesrc", "src2");<br>
                g_object_set(G_OBJECT(src1),"location",argv[2], NULL);<br>
              <br>
                GstElement *pipeline = gst_pipeline_new
              ("video-player");<br>
              <br>
                dec1 = gst_element_factory_make("decodebin2","dec1");<br>
              <br>
                dec2 = gst_element_factory_make("decodebin2","dec2");<br>
              <br>
                cout &lt;&lt; "Creando pipeline..." &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 ("alpha","alfa1");<br>
                smpte  = gst_element_factory_make
              ("smptealpha","smpte");<br>
                g_object_set(smpte,"type", transicion, NULL);<br>
                color  = gst_element_factory_make ("ffmpegcolorspace",
              "color");<br>
                GstElement * mixer  =
              gst_element_factory_make("videomixer", "mixer");<br>
              <br>
                if ((!alfa1) || (!smpte) || (!color) || (!mixer))<br>
                {<br>
                    g_printerr ("Alguno de los elementos del Bin no pudo
              ser creado. Saliendo\n");<br>
                   return 0;<br>
                }<br>
              <br>
              <br>
                cout &lt;&lt; "Creando 1..." &lt;&lt; endl;<br>
              <br>
                // Agrego Controlador<br>
              <br>
                GstController * ctrl =
              gst_object_control_properties(G_OBJECT(smpte),
              "position",NULL);<br>
              <br>
                if (ctrl == NULL)<br>
                {      <br>
                      GST_WARNING ("No puede controlar el elemento
              fuente\n");<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, "position",
              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, "position",
              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), "pad-added",
              G_CALLBACK (on_pad_added),alfa1);<br>
                g_signal_connect (G_OBJECT (dec2), "pad-added",
              G_CALLBACK (on_pad_added),smpte);<br>
              <br>
                queue = gst_element_factory_make("queue", "queue");<br>
                sink  = gst_element_factory_make("autovideosink",
              "sink");<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; "Playing..." &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 moz-do-not-send="true"
                    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'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' 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't work.<br>
                  So I wrote it back to GST_MSECOND.<br>
                  <br>
                  The code ΅without" 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 ("Final de stream\n");<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 ("Error: %s\n",
                      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 ("Dynamic pad created, linking
                      queue\n");<br>
                        sinkpad = gst_element_get_static_pad (elemento,
                      "sink");<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; "Inicio..." &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 ("Usage: %s &lt;filename1&gt;
                    &lt;filename2&gt;\n", argv[0]);<br>
                        return -1;<br>
                      }<br>
                    <br>
                  </div>
                    cout &lt;&lt; "Creando..." &lt;&lt; endl;
                  <div> <br>
                      src1 = gst_element_factory_make("filesrc",
                    "src1");<br>
                      g_object_set(G_OBJECT(src1),"location",argv[1],
                    NULL);<br>
                    <br>
                      src2 = gst_element_factory_make("filesrc",
                    "src2");<br>
                      g_object_set(G_OBJECT(src1),"location",argv[2],
                    NULL);<br>
                    <br>
                      GstElement *pipeline = gst_pipeline_new
                    ("video-player");<br>
                    <br>
                      dec1 =
                    gst_element_factory_make("decodebin2","dec1");<br>
                    <br>
                      dec2 =
                    gst_element_factory_make("decodebin2","dec2");<br>
                    <br>
                      cout &lt;&lt; "Creando pipeline..." &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
                    ("alpha","alfa1");<br>
                      smpte  = gst_element_factory_make
                    ("smptealpha","smpte");<br>
                      g_object_set(smpte,"type", transicion, NULL);<br>
                      color  = gst_element_factory_make
                    ("ffmpegcolorspace", "color");<br>
                      GstElement * mixer  =
                    gst_element_factory_make("videomixer", "mixer");<br>
                    <br>
                      if ((!alfa1) || (!smpte) || (!color) || (!mixer))<br>
                      {<br>
                          g_printerr ("Alguno de los elementos del Bin
                    no pudo ser creado. Saliendo\n");<br>
                         return 0;<br>
                      }<br>
                      <br>
                    <br>
                  </div>
                    // Agrego Controlador
                  <div><br>
                    <br>
                      GstController * ctrl =
                    gst_object_control_properties(G_OBJECT(smpte),
                    "position",NULL);<br>
                    <br>
                      if (ctrl == NULL)<br>
                      {<br>
                            GST_WARNING ("No puede controlar el elemento
                    fuente\n");<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,
                    "position", 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), "pad-added",
                    G_CALLBACK (on_pad_added),alfa1);<br>
                      g_signal_connect (G_OBJECT (dec2), "pad-added",
                    G_CALLBACK (on_pad_added),smpte);<br>
                    <br>
                      queue = gst_element_factory_make("queue",
                    "queue");<br>
                      sink  = gst_element_factory_make("autovideosink",
                    "sink");<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; "Playing..." &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 moz-do-not-send="true"
                            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
                                    moz-do-not-send="true"
                                    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'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 ("Final de stream\n");<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 ("Error: %s\n",
                                  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 ("Dynamic pad created,
                                  linking queue\n");<br>
                                    sinkpad = gst_element_get_static_pad
                                  (elemento, "sink");<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 ("Usage: %s
                                  &lt;filename1&gt;
                                  &lt;filename2&gt;\n", argv[0]);<br>
                                      return -1;<br>
                                    }<br>
                                  <br>
                                    src1 =
                                  gst_element_factory_make("filesrc",
                                  "src1");<br>
                                   
                                  g_object_set(G_OBJECT(src1),"location",argv[1],
                                  NULL);<br>
                                  <br>
                                    src2 =
                                  gst_element_factory_make("filesrc",
                                  "src2");<br>
                                   
                                  g_object_set(G_OBJECT(src1),"location",argv[2],
                                  NULL);<br>
                                  <br>
                                    GstElement *pipeline =
                                  gst_pipeline_new ("video-player");<br>
                                  <br>
                                    dec1 =
                                  gst_element_factory_make("decodebin2","dec1");<br>
                                  <br>
                                    dec2 =
                                  gst_element_factory_make("decodebin2","dec2");<br>
                                  <br>
                                    cout &lt;&lt; "Creando pipeline..."
                                  &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
                                  ("alpha","alfa1");<br>
                                    smpte  = gst_element_factory_make
                                  ("smptealpha","smpte"); <br>
                                    g_object_set(smpte,"type",
                                  transicion, NULL);<br>
                                    color  = gst_element_factory_make
                                  ("ffmpegcolorspace", "color");<br>
                                    GstElement * mixer  =
                                  gst_element_factory_make("videomixer",
                                  "mixer");<br>
                                  <br>
                                    if ((!alfa1) || (!smpte) || (!color)
                                  || (!mixer))<br>
                                    {<br>
                                        g_printerr ("Alguno de los
                                  elementos del Bin no pudo ser creado.
                                  Saliendo\n");<br>
                                       return 0;<br>
                                    }<br>
                                   <br>
                                  <br>
                                    // Controller creation
                                  <div><br>
                                    <br>
                                      GstController * ctrl =
                                    gst_object_control_properties(G_OBJECT(smpte),
                                    "position",NULL);<br>
                                    <br>
                                      if (ctrl == NULL)<br>
                                      {<br>
                                            GST_WARNING ("No puede
                                    controlar el elemento fuente\n");<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, "position",
                                    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),
                                  "pad-added", G_CALLBACK
                                  (on_pad_added),alfa1);<br>
                                    g_signal_connect (G_OBJECT (dec2),
                                  "pad-added", G_CALLBACK
                                  (on_pad_added),smpte);<br>
                                  <br>
                                    queue =
                                  gst_element_factory_make("queue",
                                  "queue");<br>
                                    sink  =
                                  gst_element_factory_make("autovideosink",
                                  "sink");<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; "Playing..." &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
                                            moz-do-not-send="true"
                                            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't figure out
what it'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's the code;
_____________


gst_interpolation_control_source_set: assertion `G_VALUE_TYPE (value) ==
self-&gt;priv-&gt;type' 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),
"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 (&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, "position", GST_CONTROL_SOURCE
(csource));

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

</pre>
                                              </div>
                                              <pre><fieldset></fieldset>
_______________________________________________
gstreamer-devel mailing list
<a moz-do-not-send="true" href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true"
                                            href="mailto:gstreamer-devel@lists.freedesktop.org"
                                            target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
                                          <a moz-do-not-send="true"
                                            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 moz-do-not-send="true" href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true"
            href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
          <a moz-do-not-send="true"
            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>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
gstreamer-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>