<font color="#333333"><font size="2"><font face="arial,helvetica,sans-serif">About the GStreamer Conference -
Prague, 2011:<br>
Time Shifting with GStreamer</font></font></font> released by Fluendo available at <font color="#333333"><font size="2"><font face="arial,helvetica,sans-serif">
<a href="https://core.fluendo.com/gstreamer/trac/browser/trunk/gst-fluendo-timeshift" target="_blank">https://core.fluendo.com/gstreamer/trac/browser/trunk/gst-fluendo-timeshift</a></font></font></font><br>
<br>Cheers,<br clear="all"><font style="color: rgb(51, 51, 51); font-family: arial,helvetica,sans-serif;" color="#2323dc"><font size="2"><b>Fluendo Marcom Team</b><br>
<b><span style="color: rgb(51, 51, 51);">FLUENDO</span><font style="color: rgb(51, 51, 51);" size="2"> <font size="1">Influencing the Multimedia World</font></font></b></font></font><font style="color: rgb(51, 51, 51); font-family: arial,helvetica,sans-serif;" color="#2323dc" size="2"><font style="color: rgb(153, 153, 153);" size="1"><br>
San Francisco, USA &
Barcelona, SPAIN<br></font>
</font><font style="color: rgb(153, 153, 153); font-family: arial,helvetica,sans-serif;" color="#2323dc" size="1">
Contact phone:<br>
Spain: +34 933 175 153<br>
United States: +1 415 773 5353</font><font style="color: rgb(153, 153, 153); font-family: arial,helvetica,sans-serif;" color="#2323dc" size="1"><br><a href="http://www.fluendo.com/" target="_blank">www.fluendo.com</a></font><font size="5"><font color="#2323dc"><br>
</font><span style="color: rgb(0, 153, 0);">P</span></font><b style="color: rgb(0, 153, 0);"><font size="1"><b>lease
consider the environment before printing this e-mail.</b></font></b><br>
<br><br><div class="gmail_quote">On Mon, Oct 31, 2011 at 6:05 PM, <span dir="ltr"><<a href="mailto:gstreamer-devel-request@lists.freedesktop.org">gstreamer-devel-request@lists.freedesktop.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Send gstreamer-devel mailing list submissions to<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
or, via email, send a message with subject or body 'help' to<br>
<a href="mailto:gstreamer-devel-request@lists.freedesktop.org">gstreamer-devel-request@lists.freedesktop.org</a><br>
<br>
You can reach the person managing the list at<br>
<a href="mailto:gstreamer-devel-owner@lists.freedesktop.org">gstreamer-devel-owner@lists.freedesktop.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of gstreamer-devel digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. Re: Changing source without stopping pipeline (Stefan Sauer)<br>
2. Second pre-release of GStreamer FFmpeg plugin (Edward Hervey)<br>
3. Conference notes, slides (Josh Doe)<br>
4. Re: Conference notes, slides (Victor Manuel J?quez Leal)<br>
5. Re: Conference notes, slides (Nicolas Dufresne)<br>
6. Re: Get v4l2src width and height before pipeline runs?<br>
(Kapil Agrawal)<br>
7. Re: Invalid property's type for a controller at runtime:<br>
`G_VALUE_TYPE (value) == self->priv->type' failed (Rossana Guerra)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Mon, 31 Oct 2011 11:24:59 +0100<br>
From: Stefan Sauer <<a href="mailto:ensonic@hora-obscura.de">ensonic@hora-obscura.de</a>><br>
Subject: Re: Changing source without stopping pipeline<br>
To: <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
Message-ID: <<a href="mailto:4EAE777B.6090804@hora-obscura.de">4EAE777B.6090804@hora-obscura.de</a>><br>
Content-Type: text/plain; charset=ISO-8859-1<br>
<br>
On 10/30/2011 03:40 AM, superlou wrote:<br>
> I have a simplified test pipeline consisting of:<br>
> v4l2src -> ffmpegcolorspace --> videoscale --> ximagesink<br>
><br>
> I would like to detect a loss of signal from the v4lsrc (currently doing by<br>
> waiting for the EOS signal, though the v42lsrc provides better warnings on<br>
> camera disconnection if I can figure out how to get them). For now, I'm<br>
> trying to achieve the simpler case of simply switching the source element to<br>
> a videotestsrc while the pipeline is playing.<br>
><br>
> I've read the information about pad blocking<br>
> (<a href="http://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-block.txt" target="_blank">http://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-block.txt</a>),<br>
> but it doesn't provide any indication on what to do for changing the source<br>
> element. I read that it may be possible to simply unlink the v4l2src,<br>
> remove it, add the videotestsrc, and link it. This sort of works in that<br>
> eventually you see the videotestsrc, but it updates the output every few<br>
> seconds (like a very slow stuttering). If I stop and play, the output is<br>
> smooth.<br>
You might want to use "videotestsrc ! capsfilter" and set the format<br>
that you use on v4l2src to videotestsrc.<br>
<br>
Stefan<br>
> I was wondering if anyone could point me towards an example or help me find<br>
> the search terms to find the proper way to change out the source element on<br>
> a playing pipeline.<br>
><br>
> Thanks,<br>
> Louis<br>
><br>
> --<br>
> View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/Changing-source-without-stopping-pipeline-tp3952239p3952239.html" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/Changing-source-without-stopping-pipeline-tp3952239p3952239.html</a><br>
> Sent from the GStreamer-devel mailing list archive at Nabble.com.<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>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Mon, 31 Oct 2011 12:03:54 +0100<br>
From: Edward Hervey <<a href="mailto:bilboed@gmail.com">bilboed@gmail.com</a>><br>
Subject: Second pre-release of GStreamer FFmpeg plugin<br>
To: "<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>"<br>
<<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>><br>
Message-ID: <1320059034.15507.3.camel@deumeu><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
Hi all,<br>
<br>
Mea culpa for saying the release would be done during the gst conf,<br>
too much time was taken up on other items.<br>
<br>
More patches needed to go in, so here's a new pre-release. This time<br>
the window will be much smaller. Unless something critical comes up,<br>
expect release on Wednesday 2nd November.<br>
<br>
<a href="http://gstreamer.freedesktop.org/src/gst-ffmpeg/pre/gst-ffmpeg-0.10.12.3.tar.bz2" target="_blank">http://gstreamer.freedesktop.org/src/gst-ffmpeg/pre/gst-ffmpeg-0.10.12.3.tar.bz2</a> <a href="http://gstreamer.freedesktop.org/src/gst-ffmpeg/pre/gst-ffmpeg-0.10.12.3.tar.gz" target="_blank">http://gstreamer.freedesktop.org/src/gst-ffmpeg/pre/gst-ffmpeg-0.10.12.3.tar.gz</a><br>
<br>
Bugs fixed:<br>
* 654037 - gst-ffmpeg enables GPL parts in ffmpeg/libav<br>
* 661417 - G722 encoder is broken<br>
<br>
Edward<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Mon, 31 Oct 2011 09:26:11 -0400<br>
From: Josh Doe <<a href="mailto:josh@joshdoe.com">josh@joshdoe.com</a>><br>
Subject: Conference notes, slides<br>
To: Discussion of the development of and with GStreamer<br>
<<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>><br>
Message-ID:<br>
<CAJnipd7QXAbo4fANcPYKwVb4q6Pg=YRk96xCmD1ubn=<a href="mailto:d2RywVg@mail.gmail.com">d2RywVg@mail.gmail.com</a>><br>
Content-Type: text/plain; charset=ISO-8859-1<br>
<br>
I'm kind of surprised there's been no mention of the conference on<br>
this list; I was hoping to go, but was unable to in the end, however I<br>
am very interested in the talks that were given.<br>
<br>
I've found hardly anything online, and certainly no slides yet. I know<br>
from Christian's post that Ubicast should have videos online within a<br>
month:<br>
<a href="http://blogs.gnome.org/uraeus/2011/10/29/back-from-gstreamer-conference-in-prague/" target="_blank">http://blogs.gnome.org/uraeus/2011/10/29/back-from-gstreamer-conference-in-prague/</a><br>
<br>
Aside from a few tweets that didn't contain much information, I found<br>
some demo videos from Guillame Emont's stabilisation talk:<br>
<a href="http://emont.org/stabilisation-demo/" target="_blank">http://emont.org/stabilisation-demo/</a><br>
<br>
And Fluendo's press release on the Time Shifting talk:<br>
<a href="http://www.fluendo.com/press/fluendo-gstreamer-time-shifting-element/" target="_blank">http://www.fluendo.com/press/fluendo-gstreamer-time-shifting-element/</a><br>
<br>
Any more? Perhaps we can compile these links and others in a page like<br>
<a href="http://gstreamer.freedesktop.org/wiki/GStreamerConference2010" target="_blank">http://gstreamer.freedesktop.org/wiki/GStreamerConference2010</a><br>
<br>
-Josh<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Mon, 31 Oct 2011 15:19:57 +0100<br>
From: Victor Manuel J?quez Leal <<a href="mailto:ceyusa@gmail.com">ceyusa@gmail.com</a>><br>
Subject: Re: Conference notes, slides<br>
To: Discussion of the development of and with GStreamer<br>
<<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>><br>
Message-ID:<br>
<CAG6h3__==<a href="mailto:Fn5jB6XT-E91L944AJ2wgnpymJ423_2kFXHzCoUMw@mail.gmail.com">Fn5jB6XT-E91L944AJ2wgnpymJ423_2kFXHzCoUMw@mail.gmail.com</a>><br>
Content-Type: text/plain; charset=ISO-8859-1<br>
<br>
On Mon, Oct 31, 2011 at 2:26 PM, Josh Doe <<a href="mailto:josh@joshdoe.com">josh@joshdoe.com</a>> wrote:<br>
> I'm kind of surprised there's been no mention of the conference on<br>
> this list; I was hoping to go, but was unable to in the end, however I<br>
> am very interested in the talks that were given.<br>
<br>
Mine are here<br>
<br>
<a href="https://gitorious.org/vjaquez-misc/syslink-talk/trees/master" target="_blank">https://gitorious.org/vjaquez-misc/syslink-talk/trees/master</a><br>
<br>
But perhaps I should put the PDF in a simple HTTP server<br>
<br>
vmjl<br>
<br>
><br>
> I've found hardly anything online, and certainly no slides yet. I know<br>
> from Christian's post that Ubicast should have videos online within a<br>
> month:<br>
> <a href="http://blogs.gnome.org/uraeus/2011/10/29/back-from-gstreamer-conference-in-prague/" target="_blank">http://blogs.gnome.org/uraeus/2011/10/29/back-from-gstreamer-conference-in-prague/</a><br>
><br>
> Aside from a few tweets that didn't contain much information, I found<br>
> some demo videos from Guillame Emont's stabilisation talk:<br>
> <a href="http://emont.org/stabilisation-demo/" target="_blank">http://emont.org/stabilisation-demo/</a><br>
><br>
> And Fluendo's press release on the Time Shifting talk:<br>
> <a href="http://www.fluendo.com/press/fluendo-gstreamer-time-shifting-element/" target="_blank">http://www.fluendo.com/press/fluendo-gstreamer-time-shifting-element/</a><br>
><br>
> Any more? Perhaps we can compile these links and others in a page like<br>
> <a href="http://gstreamer.freedesktop.org/wiki/GStreamerConference2010" target="_blank">http://gstreamer.freedesktop.org/wiki/GStreamerConference2010</a><br>
><br>
> -Josh<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>
<br>
<br>
------------------------------<br>
<br>
Message: 5<br>
Date: Mon, 31 Oct 2011 10:46:29 -0400<br>
From: Nicolas Dufresne <<a href="mailto:nicolas.dufresne@collabora.co.uk">nicolas.dufresne@collabora.co.uk</a>><br>
Subject: Re: Conference notes, slides<br>
To: Discussion of the development of and with GStreamer<br>
<<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>><br>
Message-ID: <1320072389.4543.6.camel@macbookpro><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
There is couple of video here<br>
<a href="http://gstconf.ubicast.tv/channels/#conferences2010" target="_blank">http://gstconf.ubicast.tv/channels/#conferences2010</a><br>
<br>
enjoy,<br>
Nicolas<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/3ff188aa/attachment-0001.htm" target="_blank">http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/3ff188aa/attachment-0001.htm</a>><br>
<br>
------------------------------<br>
<br>
Message: 6<br>
Date: Mon, 31 Oct 2011 22:30:38 +0530<br>
From: Kapil Agrawal <<a href="mailto:kapil.agl@gmail.com">kapil.agl@gmail.com</a>><br>
Subject: Re: Get v4l2src width and height before pipeline runs?<br>
To: Discussion of the development of and with GStreamer<br>
<<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>><br>
Message-ID:<br>
<<a href="mailto:CADK2-S5sKEAwyNbefbwtUcW5BG89Jt5ikwA-dYqEUNdzmXd0GQ@mail.gmail.com">CADK2-S5sKEAwyNbefbwtUcW5BG89Jt5ikwA-dYqEUNdzmXd0GQ@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Just a thought, may not be realted to this specific issue of yours<br>
Writing your own gstreamer plugin to do image processing stuff would make<br>
it more cleaner and better.<br>
<br>
like v4l2src ! ffmpegcolorspace ! your_image_processing_plugin !<br>
xvimagesink ?<br>
<br>
Best<br>
- Kapil<br>
<br>
On Sat, Oct 29, 2011 at 2:23 AM, wally_bkg <<a href="mailto:wb666greene@gmail.com">wb666greene@gmail.com</a>> wrote:<br>
<br>
><br>
> Edward Hervey wrote:<br>
> ><br>
> > Why aren't you using the v4l2src/v4l2sink elements ? If you have<br>
> > issues with them, please explain it in detail and/or file a bug report.<br>
> ><br>
><br>
> I have vrl2src elements at the start of my pipeline that ends with an<br>
> appsink, this worked fine with fixed video frame sizes, but now that I've<br>
> removed that restriction in the image processing algorithm the question is<br>
> how do I get the frame size from v4l2 without setting the pipeline to<br>
> playing?<br>
><br>
> I've had lots of issues with the gstreamer v4l2src tuner interface and<br>
> never<br>
> could get it to reliably set the norm and select the input across the<br>
> various v4l2 capture devices on hand. As to bug reports, the answer was<br>
> always to try a newer version, but when I tried the Ubuntu 10.04 gstreamer<br>
> PPA it broke all things multimedia and wasted a fair amount of time<br>
> recovering. At that point it became easier to just use v4l2 calls to set<br>
> the norm and select the input, then build the pipeline.<br>
><br>
> Grossly simplified my code is<br>
><br>
> V4l2src->ffmpegcolorspace->fixed caps filter->appsink<br>
> duplicate the appsink buffer data<br>
> do some image processing on the duplicated buffer data<br>
> appsrc->xvimagesink (for realtime viewing, of the processed data)<br>
> appsrc->mp4 encoding->filesink ( original data to allow non-realtime<br>
> processing afterwards)<br>
><br>
> Works quite well with fixed caps. I'm stuck on how to get the frame height<br>
> and width without fixed caps before the pipeline runs. I have to build a<br>
> bunch of tables that depend on the frame size and takes a couple of seconds<br>
> to do (perhaps not the most efficient recursive code, but it only runs<br>
> once).<br>
><br>
> I could work around this by pre-building tables of the possibilities<br>
> (640x480, 704x480, & 720x480 so far, depending on the capture device, fixed<br>
> caps was just set to 640x480) but the real issue is I'd like the v4l2<br>
> timestamps from the driver to use to synchronize A/D data from another<br>
> process running on the same machine. I asked about this earlier but got no<br>
> response:<br>
><br>
><br>
> <a href="http://gstreamer-devel.966125.n4.nabble.com/Getting-V4l2-timestamps-from-v4l2src-td3915764.html" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/Getting-V4l2-timestamps-from-v4l2src-td3915764.html</a><br>
><br>
> Dealing with various frame sizes is at this point only needed to test my<br>
> changes (which I quickly did by changing the fixed caps to match the<br>
> different capture card possibilities) in anticipation of someday using HD<br>
> video. The timestamps to synchronize the A/D data with the video is an<br>
> action item.<br>
><br>
><br>
><br>
> --<br>
> View this message in context:<br>
> <a href="http://gstreamer-devel.966125.n4.nabble.com/Get-v4l2src-width-and-height-before-pipeline-runs-tp3942212p3949188.html" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/Get-v4l2src-width-and-height-before-pipeline-runs-tp3942212p3949188.html</a><br>
> Sent from the GStreamer-devel mailing list archive at Nabble.com.<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>
<br>
<br>
<br>
--<br>
<a href="http://www.linkedin.com/in/kapilagrawal" target="_blank">http://www.linkedin.com/in/kapilagrawal</a><br>
<a href="http://www.mediamagictechnologies.com" target="_blank">www.mediamagictechnologies.com</a><br>
(Consultancy - Multimedia, Gstreamer, ffmpeg, Streaming for platforms-<br>
linux, windows, TI, android)<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/3e014580/attachment-0001.htm" target="_blank">http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/3e014580/attachment-0001.htm</a>><br>
<br>
------------------------------<br>
<br>
Message: 7<br>
Date: Mon, 31 Oct 2011 15:05:29 -0200<br>
From: Rossana Guerra <<a href="mailto:guerra.rossana@gmail.com">guerra.rossana@gmail.com</a>><br>
Subject: Re: Invalid property's type for a controller at runtime:<br>
`G_VALUE_TYPE (value) == self->priv->type' failed<br>
To: Discussion of the development of and with GStreamer<br>
<<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>><br>
Message-ID:<br>
<<a href="mailto:CAAMjx-ddGAKxdgXCtHGh4v__LR9ocXmv6Mx7FJo-S8S4XfigJg@mail.gmail.com">CAAMjx-ddGAKxdgXCtHGh4v__LR9ocXmv6Mx7FJo-S8S4XfigJg@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
thanks for response, it helps me a lot. In fact I need audio as well, I'll<br>
work around it, at least with one file.<br>
Regards,<br>
<br>
Rossana<br>
<br>
<br>
2011/10/31 Stefan Sauer <<a href="mailto:ensonic@hora-obscura.de">ensonic@hora-obscura.de</a>><br>
<br>
> **<br>
> On 10/30/2011 02:15 AM, Rossana Guerra wrote:<br>
><br>
> Hi Stefan, I saw and run the code. I noticed the differences, mostly in<br>
> the "on-pad-added" function.<br>
> You create a fakesink where the "flow" doesn't come from video, then you<br>
> create a bin from the parent element and got the static pad from it for<br>
> linking. I didn't get the meaning of this technique.<br>
><br>
><br>
> There where two distinct bugs. The first was to use src1 twice for the<br>
> pad-aaded callback if I recall right. The 2nd is that in the pad-addded<br>
> callback you get pads for audio and video. You want to terminate the<br>
> audio-pads with a fakesink and only connect the video-pads to videomixer.<br>
> If you want the adio too, you'll need to use a similar setup like<br>
> videomixer, but using adder.<br>
><br>
> You will still need to ensure that both video-outputs are in a compatible<br>
> format for videomxer. I did not had time to analyze further. Use the<br>
> GST_DEBUG_BIN_TO_DOT_FILE to understand whats in the resulting pipeline and<br>
> where it goes wrong.<br>
><br>
> Stefan<br>
><br>
><br>
> I have an "internal data flow error" message. Here's the output when I run<br>
> with debug option as you pointed out.<br>
><br>
> Debug information:<br>
><br>
> rossana@Studio:~/CodeBlocks/ctrl/bin/Debug$ GST_DEBUG="*:2" ./ctrl<br>
> "/home/rossana/video1.avi" "/home/rossana/video2.avi"<br>
> Inicio...<br>
> Creando...<br>
> Creando pipeline...<br>
> Creando 1...<br>
> Playing...<br>
> Dynamic pad created: video/x-raw-rgb<br>
> ... linking video<br>
> Dynamic pad created: audio/x-raw-int<br>
> ... dropping audio<br>
> 0:00:00.064628890 4083 0x157f070<br>
> WARN basetransform<br>
> gstbasetransform.c:1211:gst_base_transform_setcaps:<alfa1> transform could<br>
> not transform video/x-raw-yuv, width=(int)720,<br>
> height=(int)528, framerate=(fraction)25/1, format=(fourcc)I420,<br>
> interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 in anything we<br>
> support<br>
> Dynamic pad created: video/x-raw-rgb<br>
> ... linking video<br>
> Dynamic pad created: audio/x-raw-int<br>
> ... dropping audio<br>
> 0:00:00.076359290 4083 0x1545b80<br>
> WARN ffmpeg gstffmpegdec.c:2241:gst_ffmpegdec_frame:<ffdec_mpeg40><br>
> ffdec_mpeg4: decoding error (len: -1, have_data: 0)<br>
><br>
><br>
> I am trying to play 2 .avi files, I have no problem to visualize them with<br>
> Banshee or any other player, so I think I got the right codecs in my<br>
> computer.<br>
> Both videos have the same properties values:<br>
><br>
> *Video:<br>
><br>
> Dimension 720x528<br>
> Codec DivX MPEG-4 Version 5<br>
> 25 fps<br>
> bit rate: N/A<br>
><br>
> * Sound:<br>
> Codec MPEG1 Audio, layer<br>
> Channels Stereo<br>
> Frec 44100Hz<br>
> bit rate 127 kpbs<br>
><br>
> I'll keep trying, and thanks for your suggestions. Nice weekend.<br>
><br>
> Rossana<br>
><br>
><br>
><br>
> 2011/10/28 Rossana Guerra <<a href="mailto:guerra.rossana@gmail.com">guerra.rossana@gmail.com</a>><br>
><br>
>> Hi Stefan, I didn't receive the email, I even looked into the spam<br>
>> folder, just in case....<br>
>><br>
>> 2011/10/28 Stefan Sauer <<a href="mailto:ensonic@hora-obscura.de">ensonic@hora-obscura.de</a>><br>
>><br>
>>> On 10/28/2011 12:40 AM, Rossana Guerra wrote:<br>
>>><br>
>>> Sorry Stefan, where is the code to compare with?<br>
>>><br>
>>> I forwarded the mail to your personal address. Out mailing list tried<br>
>>> to be super smart and stipped attached *sourcecode*.<br>
>>><br>
>>><br>
>>> ..I downloaded the doc (pdf) and the order remains the same.<br>
>>><br>
>>> I pushed the fix to the API docs to git. That does not regenerate the<br>
>>> pdf. To be sure which pdf exactly are you talking about?<br>
>>><br>
>><br>
>><br>
>> The pdf asociated with the html file, the one that has this chapter:<br>
>><br>
>> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-dparams-parameters.html" target="_blank">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-dparams-parameters.html</a><br>
>> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/manual.pdf" target="_blank">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/manual.pdf</a><br>
>><br>
>> thanks<br>
>><br>
>><br>
>><br>
>>> Stefan<br>
>>><br>
>>><br>
>>> Regards and thanks<br>
>>><br>
>>><br>
>>> 2011/10/27 Stefan Sauer <<a href="mailto:ensonic@hora-obscura.de">ensonic@hora-obscura.de</a>><br>
>>><br>
>>>> Hi,<br>
>>>> On 10/27/2011 01:37 AM, Rossana Guerra wrote:<br>
>>>><br>
>>>> Well the error type disappeared, it was due where the place the<br>
>>>> gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE<br>
>>>> (csource)) sentence was.<br>
>>>> The first time I did it according the documentation, at the end of the<br>
>>>> value sets of the control source. It seems it isn't the right place, I<br>
>>>> changed the sentences right after creating the controller, it seems it<br>
>>>> works. Hope it helps someone else.<br>
>>>><br>
>>>> I fix the wrong order of calls in the docs.<br>
>>>><br>
>>>> In this way:<br>
>>>><br>
>>>><br>
>>>> I made a few more fixes - compare your source and mine in a diff viewer<br>
>>>> (e.g. meld). You still need to do more stuff to ensure both sources can be<br>
>>>> mixed (run it as GST_DEBUG="*:2" ./ctrl <file1> <file2> to see the<br>
>>>> warnings).<br>
>>>><br>
>>>> Stefan<br>
>>>><br>
>>>><br>
>>>> GstInterpolationControlSource * csource =<br>
>>>> gst_interpolation_control_source_new();<br>
>>>><br>
>>>><br>
>>>> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);<br>
>>>> gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE<br>
>>>> (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 <gst.h><br>
>>>> #include <controller/gstcontroller.h><br>
>>>><br>
>>>> #include <iostream><br>
>>>> #include <string.h><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, &error, &debug);<br>
>>>> g_free (debug);<br>
>>>> g_printerr ("Error: %s\n", error->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<br>
>>>> 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 << "Inicio..." << endl;<br>
>>>><br>
>>>> /* init GStreamer */<br>
>>>> gst_init (&argc, &argv);<br>
>>>> bool iniciado = gst_controller_init (&argc, &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 <filename1> <filename2>\n", argv[0]);<br>
>>>> return -1;<br>
>>>> }<br>
>>>><br>
>>>> cout << "Creando..." << 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 << "Creando pipeline..." << 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.<br>
>>>> Saliendo\n");<br>
>>>> return 0;<br>
>>>> }<br>
>>>><br>
>>>><br>
>>>> cout << "Creando 1..." << endl;<br>
>>>><br>
>>>> // Agrego Controlador<br>
>>>><br>
>>>> GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte),<br>
>>>> "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 (&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 =<br>
>>>> gst_interpolation_control_source_new();<br>
>>>><br>
>>>><br>
>>>> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);<br>
>>>> gst_controller_set_control_source (ctrl, "position",<br>
>>>> GST_CONTROL_SOURCE (csource));<br>
>>>><br>
>>>> // Seteo primer valor<br>
>>>> g_value_set_double(&val_double, 0.0);<br>
>>>> gst_interpolation_control_source_set(csource,(0 *<br>
>>>> GST_MSECOND),&val_double);<br>
>>>><br>
>>>> // Seteo segundo valor<br>
>>>> g_value_set_double(&val_double, 1.0);<br>
>>>><br>
>>>> gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double);<br>
>>>><br>
>>>> //gst_controller_set_control_source (ctrl, "position",<br>
>>>> GST_CONTROL_SOURCE (csource));<br>
>>>><br>
>>>> g_object_unref (csource);<br>
>>>> g_value_unset (&val_double);<br>
>>>><br>
>>>> g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK<br>
>>>> (on_pad_added),alfa1);<br>
>>>> g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK<br>
>>>> (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,<br>
>>>> 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 << "Playing..." << 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>
>>>> 2011/10/26 Rossana Guerra <<a href="mailto:guerra.rossana@gmail.com">guerra.rossana@gmail.com</a>><br>
>>>><br>
>>>>> Sorry, I had some copy/paste errors. Here's the code, the runtime<br>
>>>>> error is:<br>
>>>>><br>
>>>>> CRITICAL **: gst_interpolation_control_source_set: assertion<br>
>>>>> `G_VALUE_TYPE (value) == self->priv->type' failed.<br>
>>>>><br>
>>>>> I changed the duracion value variable unit to second (replacing 500<br>
>>>>> 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:<br>
>>>>><br>
>>>>><br>
>>>>> #include <gst.h><br>
>>>>> #include <controller/gstcontroller.h><br>
>>>>><br>
>>>>> #include <iostream><br>
>>>>> #include <string.h><br>
>>>>><br>
>>>>><br>
>>>>> using namespace std;<br>
>>>>><br>
>>>>> // Manejador de errores<br>
>>>>><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, &error, &debug);<br>
>>>>> g_free (debug);<br>
>>>>> g_printerr ("Error: %s\n", error->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<br>
>>>>> 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,<br>
>>>>> *src2,*dec1,*dec2,*alfa1,*color,*smpte,*queue,*sink;<br>
>>>>> GstBus *bus;<br>
>>>>><br>
>>>>> guint duracion = 500;<br>
>>>>> gint transicion = 1;<br>
>>>>><br>
>>>>> cout << "Inicio..." << endl;<br>
>>>>><br>
>>>>><br>
>>>>> /* init GStreamer */<br>
>>>>> gst_init (&argc, &argv);<br>
>>>>> bool iniciado = gst_controller_init (&argc, &argv);<br>
>>>>><br>
>>>>> loop = g_main_loop_new (NULL, FALSE);<br>
>>>>><br>
>>>>> if (argc != 3) {<br>
>>>>> g_print ("Usage: %s <filename1> <filename2>\n", argv[0]);<br>
>>>>> return -1;<br>
>>>>> }<br>
>>>>><br>
>>>>> cout << "Creando..." << endl;<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 << "Creando pipeline..." << 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",<br>
>>>>> "mixer");<br>
>>>>><br>
>>>>> if ((!alfa1) || (!smpte) || (!color) || (!mixer))<br>
>>>>> {<br>
>>>>> g_printerr ("Alguno de los elementos del Bin no pudo ser creado.<br>
>>>>> Saliendo\n");<br>
>>>>> return 0;<br>
>>>>> }<br>
>>>>><br>
>>>>><br>
>>>>> // Agrego Controlador<br>
>>>>><br>
>>>>><br>
>>>>> GstController * ctrl =<br>
>>>>> 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_int = { 0, };<br>
>>>>> g_value_init (&val_int, G_TYPE_INT);<br>
>>>>><br>
>>>>><br>
>>>>> // Set interpolation mode<br>
>>>>><br>
>>>>> GstInterpolationControlSource * csource =<br>
>>>>> gst_interpolation_control_source_new();<br>
>>>>><br>
>>>>><br>
>>>>> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);<br>
>>>>><br>
>>>>> // Seteo primer valor<br>
>>>>> g_value_set_int(&val_int, 0);<br>
>>>>> gst_interpolation_control_source_set(csource,(0 *<br>
>>>>> GST_MSECOND),&val_int);<br>
>>>>><br>
>>>>> // Seteo segundo valor<br>
>>>>> g_value_set_int (&val_int, 1);<br>
>>>>><br>
>>>>> gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_int);<br>
>>>>><br>
>>>>><br>
>>>>><br>
>>>>> gst_controller_set_control_source (ctrl, "position",<br>
>>>>> GST_CONTROL_SOURCE (csource));<br>
>>>>><br>
>>>>> g_object_unref (csource);<br>
>>>>> g_value_unset (&val_int);<br>
>>>>><br>
>>>>><br>
>>>>> g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK<br>
>>>>> (on_pad_added),alfa1);<br>
>>>>> g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK<br>
>>>>> (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,<br>
>>>>> 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 << "Playing..." << 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>
>>>>> 2011/10/26 Rossana Guerra <<a href="mailto:guerra.rossana@gmail.com">guerra.rossana@gmail.com</a>><br>
>>>>><br>
>>>>>> Where it says guint duration = 500.0 it should say guint duration =<br>
>>>>>> 500. Nonetheless, the error persists.<br>
>>>>>><br>
>>>>>><br>
>>>>>> 2011/10/26 Rossana Guerra <<a href="mailto:guerra.rossana@gmail.com">guerra.rossana@gmail.com</a>><br>
>>>>>><br>
>>>>>>> HI Stefan, thanks for your help, I changed the variable type from<br>
>>>>>>> gdouble to guint, same error.<br>
>>>>>>><br>
>>>>>>> Here's the whole code example:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> #include <gst.h><br>
>>>>>>> #include <controller/gstcontroller.h><br>
>>>>>>> #include <iostream><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> using namespace std;<br>
>>>>>>><br>
>>>>>>> // Error handler<br>
>>>>>>> static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer<br>
>>>>>>> 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, &error, &debug);<br>
>>>>>>> g_free (debug);<br>
>>>>>>> g_printerr ("Error: %s\n", error->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,<br>
>>>>>>> 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,<br>
>>>>>>> *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 (&argc, &argv);<br>
>>>>>>> bool iniciado = gst_controller_init (&argc, &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 <filename1> <filename2>\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 << "Creando pipeline..." << 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",<br>
>>>>>>> "mixer");<br>
>>>>>>><br>
>>>>>>> if ((!alfa1) || (!smpte) || (!color) || (!mixer))<br>
>>>>>>> {<br>
>>>>>>> g_printerr ("Alguno de los elementos del Bin no pudo ser<br>
>>>>>>> creado. Saliendo\n");<br>
>>>>>>> return 0;<br>
>>>>>>> }<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> // Controller creation<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> GstController * ctrl =<br>
>>>>>>> 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 (&val_double, G_TYPE_DOUBLE);<br>
>>>>>>><br>
>>>>>>> // Set interpolation mode<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> GstInterpolationControlSource * csource =<br>
>>>>>>> gst_interpolation_control_source_new();<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);<br>
>>>>>>><br>
>>>>>>> // Seteo primer valor<br>
>>>>>>> g_value_set_double(&val_double, 0.0);<br>
>>>>>>> gst_interpolation_control_source_set(csource,(0 *<br>
>>>>>>> GST_MSECOND),&val_double);<br>
>>>>>>><br>
>>>>>>> // Seteo segundo valor<br>
>>>>>>> g_value_set_double (&val_double, 1.0);<br>
>>>>>>><br>
>>>>>>> gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double);<br>
>>>>>>><br>
>>>>>>> gst_controller_set_control_source (ctrl, "position",<br>
>>>>>>> GST_CONTROL_SOURCE (csource));<br>
>>>>>>><br>
>>>>>>> g_object_unref (csource);<br>
>>>>>>> g_value_unset (&val_double);<br>
>>>>>>><br>
>>>>>>> g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK<br>
>>>>>>> (on_pad_added),alfa1);<br>
>>>>>>> g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK<br>
>>>>>>> (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,<br>
>>>>>>> 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 << "Playing..." << 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>
>>>>>>> 2011/10/26 Stefan Sauer <<a href="mailto:ensonic@hora-obscura.de">ensonic@hora-obscura.de</a>><br>
>>>>>>><br>
>>>>>>>> On 10/26/2011 03:12 AM, Rossana Guerra wrote:<br>
>>>>>>>><br>
>>>>>>>> Hi I trying to control the position property of a smptealpha element. It<br>
>>>>>>>> controls the opacity of the alpha channel,<br>
>>>>>>>><br>
>>>>>>>> no, position controls the transition of the fade. 0.0:input1,<br>
>>>>>>>> 1.0:input2.<br>
>>>>>>>><br>
>>>>>>>> it varies from 0.0 to 1.0.<br>
>>>>>>>> The duration of this setting is 500ms.<br>
>>>>>>>><br>
>>>>>>>> I am working around this problem, it happens at runtime, I can't figure out<br>
>>>>>>>> what it's wrong.<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> What is not working? The code snippet looks more of less okay.<br>
>>>>>>>> Maybe you can post a full standalone example.<br>
>>>>>>>><br>
>>>>>>>> Stefan<br>
>>>>>>>><br>
>>>>>>>> Thanks and regards,<br>
>>>>>>>><br>
>>>>>>>> Rossana<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> Here's the code;<br>
>>>>>>>> _____________<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> gst_interpolation_control_source_set: assertion `G_VALUE_TYPE (value) ==<br>
>>>>>>>> self->priv->type' failed<br>
>>>>>>>><br>
>>>>>>>> // Agrego Controlador<br>
>>>>>>>><br>
>>>>>>>> gdouble duracion = 500;<br>
>>>>>>>><br>
>>>>>>>> guint64 duracion = 500;<br>
>>>>>>>><br>
>>>>>>>> GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte),<br>
>>>>>>>> "position",NULL);<br>
>>>>>>>><br>
>>>>>>>> if (ctrl == NULL)<br>
>>>>>>>> {<br>
>>>>>>>> GST_WARNING ("No puede controlar el elemento fuente\n");<br>
>>>>>>>> return 0;<br>
>>>>>>>> }<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> // Todo valor GValue debe inicializarse en 0<br>
>>>>>>>> GValue val_double = { 0, };<br>
>>>>>>>> g_value_init (&val_double, G_TYPE_DOUBLE);<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> // Seteo modo de interpolacion<br>
>>>>>>>><br>
>>>>>>>> GstInterpolationControlSource * csource =<br>
>>>>>>>> gst_interpolation_control_source_new();<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR);<br>
>>>>>>>><br>
>>>>>>>> // Seteo primer valor<br>
>>>>>>>> g_value_set_double(&val_double, 0.0);<br>
>>>>>>>> gst_interpolation_control_source_set(csource,(0 *<br>
>>>>>>>> GST_MSECOND),&val_double);<br>
>>>>>>>><br>
>>>>>>>> // Seteo segundo valor<br>
>>>>>>>> g_value_set_double (&val_double, 1.0);<br>
>>>>>>>><br>
>>>>>>>> gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double);<br>
>>>>>>>><br>
>>>>>>>> gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE<br>
>>>>>>>> (csource));<br>
>>>>>>>><br>
>>>>>>>> g_object_unref (csource);<br>
>>>>>>>> g_value_unset (&val_double);<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> _______________________________________________<br>
>>>>>>>> gstreamer-devel mailing listgstreamer-devel@lists.freedesktop.orghttp://<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><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>
>>>>>>>><br>
>>>>>>><br>
>>>>>><br>
>>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> gstreamer-devel mailing listgstreamer-devel@lists.freedesktop.orghttp://<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
>>>><br>
>>>><br>
>>>><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>
>>>><br>
>>><br>
>>> _______________________________________________<br>
>>> gstreamer-devel mailing listgstreamer-devel@lists.freedesktop.orghttp://<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
>>><br>
>>><br>
>>><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>
>>><br>
>><br>
><br>
> _______________________________________________<br>
> gstreamer-devel mailing listgstreamer-devel@lists.freedesktop.orghttp://<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
><br>
><br>
><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>
><br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/350c2653/attachment.htm" target="_blank">http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20111031/350c2653/attachment.htm</a>><br>
<br>
------------------------------<br>
<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>
<br>
End of gstreamer-devel Digest, Vol 9, Issue 90<br>
**********************************************<br>
</blockquote></div><br>