[gst-devel] caps doesn't remember?

David Schleef ds at schleef.org
Mon Dec 29 11:44:15 CET 2003


On Wed, Dec 24, 2003 at 01:23:56PM +0100, Ronald Bultje wrote:
> Hi,
> 
> pipeline:
> gst-launch filesrc location=/media/clips/Trance\ Energy\ 2002\
> DvDSebRip.avi ! avidemux .video_00 ! { queue ! ffdec_mpeg4 !
> ffcolorspace ! ximagesink }
> 
> I added g_print in avidemux right before try_set_caps() and in ffdec
> right at the start of the link function:
> 
> AVI caps: video/x-divx, divxversion=(int)5, framerate=(double)25.000000,
> width=(int)640, height=(int)464
> Incoming: video/x-divx, divxversion=(int)5, framerate=(double)0.000000,
> width=(int)16, height=(int)16
> 
> How can that be? 16 and 0.0 are the lowest values in the pad template on
> avidemux's src pads, but they shouldn't be here. Is something going bad
> here? What's mainpulating caps in between try_set_caps() and the link
> function call?

It's likely that this is the negotiation that happens before the
try_set_caps().  In the cases that I've seen, it's harmless, although
surprising and a bit annoying while debugging.  The try_set_caps()
merely renegotiates the link, in a similar way to how try_set_caps()
works for ximagesink to renegotiate the size.

In the long run, it will be wise to have a "don't bother negotiating"
flag on a pad.  That "long run" may end up being next week.

If this doesn't describe what you're seeing, then it's a problem.

> Also ffmpegdec calls if (!GST_PAD_CAPS (pad)) { ... set caps ...} on its
> own src side. This is called (successfully!) during each iteration,
> which doesn't really help either. GST_PAD_CAPS() always returns null.

Oops, this is a bug.



dave...





More information about the gstreamer-devel mailing list