[gst-devel] Should element's iterated pads be unref'ed?

Luis de Bethencourt luis at debethencourt.com
Tue Feb 15 11:11:32 CET 2011


On Mon, Feb 14, 2011 at 8:47 PM, Alexey Chernov <4ernov at gmail.com> wrote:
> On Sunday 13 February 2011 21:38:08 Luis de Bethencourt wrote:
>> On Fri, Feb 11, 2011 at 9:11 PM, Alexey Chernov <4ernov at gmail.com> wrote:
>> > On Tuesday 08 February 2011 21:12:27 you wrote:
>> >> On Tue, 2011-02-08 at 15:26 +0300, 4ernov wrote:
>> >> > What could be the problem? Maybe I should't unref pads after usage?
>> >> > But in all the code snippets I've seen there's unref for every used
>> >> > pad.
>> >>
>> >> You probably need to check the result of gst_iterator_next right after
>> >> you call it. Even if the result is DONE or ERROR you are still using the
>> >> pad and unreferring it. Just use the example of GstIterator.
>> >
>> > Thanks, Luciana. I searched for an example code with little success so
>> > you reference is quite helpful. The problem actually went away as I
>> > cleaned and recompiled the application but I'd better find out what the
>> > reason was.
>> >
>> > Thank you.
>>
>> So what cleans did you make, do you still have the faulty code?
>
> No, that time I meant only full rebuild and reinstall of the faulty code and
> it used to fix the problem. Now I fixed the code as you and Luciana suggested.
>
>> Luciana's suggestion was something you should always do, check the
>> function was successful before continuing.
>> In some cases you might need to wait until an async Gst function
>> finishes before doing anything related.
>
> How can I implement this? Is it necessary to call _async function to ensure
> everything is blocked? The use case is to change pipeline branches dynamically
> after start of the playback.
>

I was just stating that it is good style to check for the return.

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstIterator.html#gst-iterator-next
In this link you can read about the return values of
gst_iterator_next(): GST_ITERATOR_OK, GST_ITERATOR_DONE,
GST_ITERATOR_RESYNC, GST_ITERATOR_ERROR.
As you can see it makes sense to have your code act acordingly
depending on which return value you get.

Luis
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



More information about the gstreamer-devel mailing list