[Bug 729760] appsrc: Changing caps and pushing buffers is not serialized
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Sun Jul 27 03:03:19 PDT 2014
https://bugzilla.gnome.org/show_bug.cgi?id=729760
GStreamer | gst-plugins-base | git
comicfans44 <comicfans44> changed:
What |Removed |Added
----------------------------------------------------------------------------
Version|1.3.1 |git
--- Comment #4 from comicfans44 <comicfans44 at gmail.com> 2014-07-27 10:03:14 UTC ---
(In reply to comment #2)
> If you would've copied what I've written on the mailing list, then the cause
> and solution would already be mentioned here :)
>
>
>
> This looks like a bug indeed, I can't see anything wrong in your code.
> The problem here most likely is that appsrc does not make sure that all
> previous buffers are pushed downstream before using the new caps. Should
> be relatively easy to fix by tracking caps together with buffers...
any update ? after re-check git(73646bd0) version ,this bug still exists,
seems bug happend here: gstappsrc.c:1058
gst_app_src_create callback
while (TRUE) {
/* return data as long as we have some */
if (!g_queue_is_empty (priv->queue)) {
guint buf_size;
if (priv->new_caps) {
priv->new_caps = FALSE;
// did not flush previous buffers before new caps negotiate
gst_app_src_do_negotiate (bsrc);
/* Lock has released so now may need
*- flushing
*- new caps change
*- check queue has data */
if (G_UNLIKELY (priv->flushing))
goto flushing;
/* Contiue checks caps and queue */
continue;--------> next loop may return a buffer but downstream
elements already has new caps
how could I fix this ?
plus: I found gst_app_src_send_event drop all queued buffer when receiving
flush_stop, does this mean appsrc lost buffers ?
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the gstreamer-bugs
mailing list