[gst-devel] Regarding the broken MPEG

Bultje, R.S. R.S.Bultje at students.uu.nl
Mon Mar 1 12:23:04 CET 2004


Hi Benjamin,

thanks for the reply.

> > gst-launch-0.7 filesrc location=/media/clips/Trance\ Energy\ 2002\
> > DvDSebRip.avi ! avidemux name=demux .video_00 ! ffdec_mpeg4 !
> > ffcolorspace ! ximagesink demux.audio_00 ! mad ! osssink
> > 
> > gives me the "very slow playback" thing.
> > 
> _if_ there are no timestamp issues (that is you're absolutely sure from 
> looking at gst-launch -v with fakesinks that the timestamps of every buffer 
> are correct) I have no good idea how that would happen, though it's probably 
> something simple I haven't thought about.

Yes, the timestamps are correct. I first thought of that, too.

It'd be really cool if you could help with this. :).

> The problem:
> When you use the above pipeline and the videosink goes into a wait for a 
> time that is bigger than the maximum time possible with all samples 
> processed, we run into a deadlock, because the clock won't move forwards and 
> the videosink won't stop waiting.

Hm, is there any chance I can test that this is happening?

Anyway, since this seems to be a theoretical issue, and maybe practical: can we prevent this? E.g. by adding a max. wait time, after which the video clock waits up?

> > 10s with a segfault, after a "(process:13131): GStreamer-CRITICAL **:
> > file gstdata.c: line 242 (gst_data_unref): assertion
> > `GST_DATA_REFCOUNT_VALUE (data) > 0' failed"... Result seems to be
> > random, though, since I didn't get that warning the second time I ran it
> > outside a debugger (still a segfault, though).
> > 
> That assertion has in all cases that I fixed been caused by unreffing an
> event after gst_pad_event_default'ing it. gst_pad_event_default takes the 
> reference. I'm pretty sure audio is fine (I haven't seen this for a long 
> time in Rhythmbox), so I'd blame avidemux or ffdec.

Seems reasonable, I'll check that.

> > gst-launch-0.7 filesrc location=/media/clips/Trance\ Energy\ 2002\
> > DvDSebRip.avi ! avidemux name=demux .video_00 ! { queue ! ffdec_mpeg4 !
> > ffcolorspace ! ximagesink } demux.audio_00 ! { queue ! mad ! osssink }
> > 
> > works.
> > 
> This is because you have 2 queues, so there's always enough data in both 
> queues. The difference between clocks and waits will never be big enough so 
> that one queue is empty while the other is full and waits for the time to 
> advance.

I'll do some more testing. Do you have any ideas on how tim improve all this (clocking) so that default spider video pipelines work? :).

Ronald
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20040301/5314c47b/attachment.htm>


More information about the gstreamer-devel mailing list