gstreamer-devel Digest, Vol 9, Issue 90

Marketing & Communication marcom at fluendo.com
Mon Oct 31 10:32:16 PDT 2011


About the GStreamer Conference - Prague, 2011:
Time Shifting with GStreamer released by Fluendo available at
https://core.fluendo.com/gstreamer/trac/browser/trunk/gst-fluendo-timeshift

Cheers,
*Fluendo Marcom Team*
*FLUENDO Influencing the Multimedia World*
San Francisco, USA & Barcelona, SPAIN
 Contact phone:
Spain:  +34 933 175 153
United States: +1 415 773 5353
www.fluendo.com
P*lease consider the environment before printing this e-mail.*


On Mon, Oct 31, 2011 at 6:05 PM, <
gstreamer-devel-request at lists.freedesktop.org> wrote:

> Send gstreamer-devel mailing list submissions to
>        gstreamer-devel at lists.freedesktop.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> or, via email, send a message with subject or body 'help' to
>        gstreamer-devel-request at lists.freedesktop.org
>
> You can reach the person managing the list at
>        gstreamer-devel-owner at lists.freedesktop.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of gstreamer-devel digest..."
>
>
> Today's Topics:
>
>   1. Re: Changing source without stopping pipeline (Stefan Sauer)
>   2. Second pre-release of GStreamer FFmpeg plugin (Edward Hervey)
>   3. Conference notes, slides (Josh Doe)
>   4. Re: Conference notes, slides (Victor Manuel J?quez Leal)
>   5. Re: Conference notes, slides (Nicolas Dufresne)
>   6. Re: Get v4l2src width and height before pipeline runs?
>      (Kapil Agrawal)
>   7. Re: Invalid property's type for a controller at runtime:
>      `G_VALUE_TYPE (value) == self->priv->type' failed (Rossana Guerra)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 31 Oct 2011 11:24:59 +0100
> From: Stefan Sauer <ensonic at hora-obscura.de>
> Subject: Re: Changing source without stopping pipeline
> To: gstreamer-devel at lists.freedesktop.org
> Message-ID: <4EAE777B.6090804 at hora-obscura.de>
> Content-Type: text/plain; charset=ISO-8859-1
>
> On 10/30/2011 03:40 AM, superlou wrote:
> > I have a simplified test pipeline consisting of:
> > v4l2src -> ffmpegcolorspace --> videoscale --> ximagesink
> >
> > I would like to detect a loss of signal from the v4lsrc (currently doing
> by
> > waiting for the EOS signal, though the v42lsrc provides better warnings
> on
> > camera disconnection if I can figure out how to get them).  For now, I'm
> > trying to achieve the simpler case of simply switching the source
> element to
> > a videotestsrc while the pipeline is playing.
> >
> > I've read the information about pad blocking
> > (
> http://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-block.txt
> ),
> > but it doesn't provide any indication on what to do for changing the
> source
> > element.  I read that it may be possible to simply unlink the v4l2src,
> > remove it, add the videotestsrc, and link it.  This sort of works in that
> > eventually you see the videotestsrc, but it updates the output every few
> > seconds (like a very slow stuttering).  If I stop and play, the output is
> > smooth.
> You might want to use "videotestsrc ! capsfilter" and set the format
> that you use on v4l2src to videotestsrc.
>
> Stefan
> > I was wondering if anyone could point me towards an example or help me
> find
> > the search terms to find the proper way to change out the source element
> on
> > a playing pipeline.
> >
> > Thanks,
> > Louis
> >
> > --
> > View this message in context:
> http://gstreamer-devel.966125.n4.nabble.com/Changing-source-without-stopping-pipeline-tp3952239p3952239.html
> > Sent from the GStreamer-devel mailing list archive at Nabble.com.
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> ------------------------------
>
> Message: 2
> Date: Mon, 31 Oct 2011 12:03:54 +0100
> From: Edward Hervey <bilboed at gmail.com>
> Subject: Second pre-release of GStreamer FFmpeg plugin
> To: "gstreamer-devel at lists.freedesktop.org"
>        <gstreamer-devel at lists.freedesktop.org>
> Message-ID: <1320059034.15507.3.camel at deumeu>
> Content-Type: text/plain; charset="us-ascii"
>
> Hi all,
>
>  Mea culpa for saying the release would be done during the gst conf,
> too much time was taken up on other items.
>
>  More patches needed to go in, so here's a new pre-release. This time
> the window will be much smaller. Unless something critical comes up,
> expect release on Wednesday 2nd November.
>
>
> http://gstreamer.freedesktop.org/src/gst-ffmpeg/pre/gst-ffmpeg-0.10.12.3.tar.bz2
> http://gstreamer.freedesktop.org/src/gst-ffmpeg/pre/gst-ffmpeg-0.10.12.3.tar.gz
>
> Bugs fixed:
>  * 654037 - gst-ffmpeg enables GPL parts in ffmpeg/libav
>  * 661417 - G722 encoder is broken
>
>      Edward
>
>
>
> ------------------------------
>
> Message: 3
> Date: Mon, 31 Oct 2011 09:26:11 -0400
> From: Josh Doe <josh at joshdoe.com>
> Subject: Conference notes, slides
> To: Discussion of the development of and with GStreamer
>        <gstreamer-devel at lists.freedesktop.org>
> Message-ID:
>        <CAJnipd7QXAbo4fANcPYKwVb4q6Pg=YRk96xCmD1ubn=d2RywVg at mail.gmail.com
> >
> Content-Type: text/plain; charset=ISO-8859-1
>
> I'm kind of surprised there's been no mention of the conference on
> this list; I was hoping to go, but was unable to in the end, however I
> am very interested in the talks that were given.
>
> I've found hardly anything online, and certainly no slides yet. I know
> from Christian's post that Ubicast should have videos online within a
> month:
>
> http://blogs.gnome.org/uraeus/2011/10/29/back-from-gstreamer-conference-in-prague/
>
> Aside from a few tweets that didn't contain much information, I found
> some demo videos from Guillame Emont's stabilisation talk:
> http://emont.org/stabilisation-demo/
>
> And Fluendo's press release on the Time Shifting talk:
> http://www.fluendo.com/press/fluendo-gstreamer-time-shifting-element/
>
> Any more? Perhaps we can compile these links and others in a page like
> http://gstreamer.freedesktop.org/wiki/GStreamerConference2010
>
> -Josh
>
>
> ------------------------------
>
> Message: 4
> Date: Mon, 31 Oct 2011 15:19:57 +0100
> From: Victor Manuel J?quez Leal <ceyusa at gmail.com>
> Subject: Re: Conference notes, slides
> To: Discussion of the development of and with GStreamer
>        <gstreamer-devel at lists.freedesktop.org>
> Message-ID:
>        <CAG6h3__==Fn5jB6XT-E91L944AJ2wgnpymJ423_2kFXHzCoUMw at mail.gmail.com
> >
> Content-Type: text/plain; charset=ISO-8859-1
>
> On Mon, Oct 31, 2011 at 2:26 PM, Josh Doe <josh at joshdoe.com> wrote:
> > I'm kind of surprised there's been no mention of the conference on
> > this list; I was hoping to go, but was unable to in the end, however I
> > am very interested in the talks that were given.
>
> Mine are here
>
> https://gitorious.org/vjaquez-misc/syslink-talk/trees/master
>
> But perhaps I should put the PDF in a simple HTTP server
>
> vmjl
>
> >
> > I've found hardly anything online, and certainly no slides yet. I know
> > from Christian's post that Ubicast should have videos online within a
> > month:
> >
> http://blogs.gnome.org/uraeus/2011/10/29/back-from-gstreamer-conference-in-prague/
> >
> > Aside from a few tweets that didn't contain much information, I found
> > some demo videos from Guillame Emont's stabilisation talk:
> > http://emont.org/stabilisation-demo/
> >
> > And Fluendo's press release on the Time Shifting talk:
> > http://www.fluendo.com/press/fluendo-gstreamer-time-shifting-element/
> >
> > Any more? Perhaps we can compile these links and others in a page like
> > http://gstreamer.freedesktop.org/wiki/GStreamerConference2010
> >
> > -Josh
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >
>
>
> ------------------------------
>
> Message: 5
> Date: Mon, 31 Oct 2011 10:46:29 -0400
> From: Nicolas Dufresne <nicolas.dufresne at collabora.co.uk>
> Subject: Re: Conference notes, slides
> To: Discussion of the development of and with GStreamer
>        <gstreamer-devel at lists.freedesktop.org>
> Message-ID: <1320072389.4543.6.camel at macbookpro>
> Content-Type: text/plain; charset="utf-8"
>
> There is couple of video here
> http://gstconf.ubicast.tv/channels/#conferences2010
>
> enjoy,
> Nicolas
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/3ff188aa/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 6
> Date: Mon, 31 Oct 2011 22:30:38 +0530
> From: Kapil Agrawal <kapil.agl at gmail.com>
> Subject: Re: Get v4l2src width and height before pipeline runs?
> To: Discussion of the development of and with GStreamer
>        <gstreamer-devel at lists.freedesktop.org>
> Message-ID:
>        <CADK2-S5sKEAwyNbefbwtUcW5BG89Jt5ikwA-dYqEUNdzmXd0GQ at mail.gmail.com
> >
> Content-Type: text/plain; charset="iso-8859-1"
>
> Just a thought, may not be realted to this specific issue of yours
> Writing your own gstreamer plugin to do image processing stuff would make
> it more cleaner and better.
>
> like v4l2src ! ffmpegcolorspace ! your_image_processing_plugin !
> xvimagesink ?
>
> Best
> - Kapil
>
> On Sat, Oct 29, 2011 at 2:23 AM, wally_bkg <wb666greene at gmail.com> wrote:
>
> >
> > Edward Hervey wrote:
> > >
> > >   Why aren't you using the v4l2src/v4l2sink elements ? If you have
> > > issues with them, please explain it in detail and/or file a bug report.
> > >
> >
> > I have vrl2src elements at the start of my pipeline that ends with an
> > appsink, this worked fine with fixed video frame sizes, but now that I've
> > removed that restriction in the image processing algorithm the question
> is
> > how do I get the frame size from v4l2 without setting the pipeline to
> > playing?
> >
> > I've had lots of issues with the gstreamer v4l2src tuner interface and
> > never
> > could get it to reliably set the norm and select the input across the
> > various v4l2 capture devices on hand.  As to bug reports, the answer was
> > always to try a newer version, but when I tried the Ubuntu 10.04
> gstreamer
> > PPA it broke all things multimedia and wasted a fair amount of time
> > recovering.  At that point it became easier to just use v4l2 calls to set
> > the norm and select the input, then build the pipeline.
> >
> > Grossly simplified my code is
> >
> > V4l2src->ffmpegcolorspace->fixed caps filter->appsink
> > duplicate the appsink buffer data
> > do some image processing on the duplicated buffer data
> > appsrc->xvimagesink (for realtime viewing, of the processed data)
> > appsrc->mp4 encoding->filesink ( original data to allow non-realtime
> > processing afterwards)
> >
> > Works quite well with fixed caps.  I'm stuck on how to get the frame
> height
> > and width without fixed caps before the pipeline runs.   I have to build
> a
> > bunch of tables that depend on the frame size and takes a couple of
> seconds
> > to do (perhaps not the most efficient recursive code, but it only runs
> > once).
> >
> > I could work around this by pre-building tables of the possibilities
> > (640x480, 704x480, & 720x480 so far, depending on the capture device,
> fixed
> > caps was just set to 640x480) but the real issue is I'd like the v4l2
> > timestamps from the driver to use to synchronize A/D data from another
> > process running on the same machine.  I asked about this earlier but got
> no
> > response:
> >
> >
> >
> http://gstreamer-devel.966125.n4.nabble.com/Getting-V4l2-timestamps-from-v4l2src-td3915764.html
> >
> > Dealing with various frame sizes is at this point only needed to test my
> > changes (which I quickly did by changing the fixed caps  to match the
> > different capture card possibilities) in anticipation of someday using HD
> > video.  The timestamps to synchronize the A/D data with the video is an
> > action item.
> >
> >
> >
> > --
> > View this message in context:
> >
> http://gstreamer-devel.966125.n4.nabble.com/Get-v4l2src-width-and-height-before-pipeline-runs-tp3942212p3949188.html
> > Sent from the GStreamer-devel mailing list archive at Nabble.com.
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >
>
>
>
> --
> http://www.linkedin.com/in/kapilagrawal
> www.mediamagictechnologies.com
> (Consultancy - Multimedia, Gstreamer, ffmpeg, Streaming for platforms-
> linux, windows, TI, android)
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/3e014580/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 7
> Date: Mon, 31 Oct 2011 15:05:29 -0200
> From: Rossana Guerra <guerra.rossana at gmail.com>
> Subject: Re: Invalid property's type for a controller at runtime:
>        `G_VALUE_TYPE (value) == self->priv->type' failed
> To: Discussion of the development of and with GStreamer
>        <gstreamer-devel at lists.freedesktop.org>
> Message-ID:
>        <CAAMjx-ddGAKxdgXCtHGh4v__LR9ocXmv6Mx7FJo-S8S4XfigJg at mail.gmail.com
> >
> Content-Type: text/plain; charset="utf-8"
>
> thanks for response, it helps me a lot. In fact I need audio as well, I'll
> work around it, at least with one file.
> Regards,
>
> Rossana
>
>
> 2011/10/31 Stefan Sauer <ensonic at hora-obscura.de>
>
> > **
> > On 10/30/2011 02:15 AM, Rossana Guerra wrote:
> >
> > Hi Stefan, I saw and run the code. I noticed the differences, mostly in
> > the "on-pad-added" function.
> > You create a fakesink where the "flow" doesn't come from video, then you
> > create a bin from the parent element and got the static pad from it for
> > linking. I didn't get the meaning of this technique.
> >
> >
> > There where two distinct bugs. The first was to use src1 twice for the
> > pad-aaded callback if I recall right. The 2nd is that in the pad-addded
> > callback you get pads for audio and video. You want to terminate the
> > audio-pads with a fakesink and only connect the video-pads to videomixer.
> > If you want the adio too, you'll need to use a similar setup like
> > videomixer, but using adder.
> >
> > You will still need to ensure that both video-outputs are in a compatible
> > format for videomxer. I did not had time to analyze further. Use the
> > GST_DEBUG_BIN_TO_DOT_FILE to understand whats in the resulting pipeline
> and
> > where it goes wrong.
> >
> > Stefan
> >
> >
> > I have an "internal data flow error" message. Here's the output when I
> run
> > with debug option as you pointed out.
> >
> > Debug information:
> >
> > rossana at Studio:~/CodeBlocks/ctrl/bin/Debug$ GST_DEBUG="*:2" ./ctrl
> > "/home/rossana/video1.avi" "/home/rossana/video2.avi"
> > Inicio...
> > Creando...
> > Creando pipeline...
> > Creando 1...
> > Playing...
> > Dynamic pad created: video/x-raw-rgb
> > ... linking video
> > Dynamic pad created: audio/x-raw-int
> > ... dropping audio
> > 0:00:00.064628890  4083      0x157f070
> > WARN  basetransform
> > gstbasetransform.c:1211:gst_base_transform_setcaps:<alfa1> transform
> could
> > not transform video/x-raw-yuv, width=(int)720,
> > height=(int)528, framerate=(fraction)25/1, format=(fourcc)I420,
> > interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 in anything
> we
> > support
> > Dynamic pad created: video/x-raw-rgb
> > ... linking video
> > Dynamic pad created: audio/x-raw-int
> > ... dropping audio
> > 0:00:00.076359290  4083      0x1545b80
> > WARN  ffmpeg gstffmpegdec.c:2241:gst_ffmpegdec_frame:<ffdec_mpeg40>
> > ffdec_mpeg4: decoding error (len: -1, have_data: 0)
> >
> >
> > I am trying to play 2 .avi files, I have no problem to visualize them
> with
> > Banshee or any other player, so I think I got the right codecs in my
> > computer.
> > Both videos have the same properties values:
> >
> > *Video:
> >
> > Dimension 720x528
> > Codec DivX MPEG-4 Version 5
> > 25 fps
> > bit rate: N/A
> >
> > * Sound:
> > Codec MPEG1 Audio, layer
> > Channels Stereo
> > Frec 44100Hz
> > bit rate 127 kpbs
> >
> > I'll keep trying, and thanks for your suggestions. Nice weekend.
> >
> > Rossana
> >
> >
> >
> > 2011/10/28 Rossana Guerra <guerra.rossana at gmail.com>
> >
> >> Hi Stefan, I didn't receive the email, I even looked into the spam
> >> folder, just in case....
> >>
> >>  2011/10/28 Stefan Sauer <ensonic at hora-obscura.de>
> >>
> >>>  On 10/28/2011 12:40 AM, Rossana Guerra wrote:
> >>>
> >>> Sorry Stefan, where is the code to compare with?
> >>>
> >>>  I forwarded the mail to your personal address. Out mailing list tried
> >>> to be super smart and stipped attached *sourcecode*.
> >>>
> >>>
> >>> ..I downloaded the doc (pdf) and the order remains the same.
> >>>
> >>>  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?
> >>>
> >>
> >>
> >> The pdf asociated with the html file, the one that has this chapter:
> >>
> >>
> http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-dparams-parameters.html
> >>
> http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/manual.pdf
> >>
> >> thanks
> >>
> >>
> >>
> >>> Stefan
> >>>
> >>>
> >>> 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
> @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
> @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
> @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/20111031/350c2653/attachment.htm
> >
>
> ------------------------------
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
> End of gstreamer-devel Digest, Vol 9, Issue 90
> **********************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/8e15fa6d/attachment-0001.htm>


More information about the gstreamer-devel mailing list