[Gstreamer-bugs] [Bug 113537] Changed - xvid mega-patch

bugzilla-daemon at widget.gnome.org bugzilla-daemon at widget.gnome.org
Sat May 31 07:29:55 PDT 2003


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

http://bugzilla.gnome.org/show_bug.cgi?id=113537

Changed by vishnu at pobox.com.

--- shadow/113537	Fri May 23 12:57:42 2003
+++ shadow/113537.tmp.28093	Sat May 31 10:29:54 2003
@@ -1,12 +1,12 @@
 Bug#: 113537
 Product: GStreamer
 Version: HEAD CVS
 OS: other
 OS Details: 
-Status: NEEDINFO   
+Status: REOPENED   
 Resolution: 
 Severity: normal
 Priority: Normal
 Component: gst-plugins
 AssignedTo: rbultje at ronald.bitfreak.net                            
 ReportedBy: vishnu at pobox.com               
@@ -36,6 +36,39 @@
 * bitrates are generally not constant (VBR)
 * fps queries should be forwarded to elements upstream
 
 For the other one, what's the use of changing capsnego from how it's
 normally done in encoder/decoder elements? Can you explain why it's
 needed?
+
+------- Additional Comments From vishnu at pobox.com  2003-05-31 10:29 -------
+Forward FPS requests upstream?  Good idea!  Ignore that part of my patch.
+
+Concerning the caps nego, i start running a decode pipeline as below.
+(Actually i am programming in C, but i will write in gst-launch syntax
+because it's easier to explain what i'm doing.)
+
+  filesrc location=/local/aleader/original/Star_Wars_1.mpg ! mpegdemux
+name=demux demux.video_00 { queue name=vdemux_q ! mpeg2dec ! fakesink
+} demux.audio_00 ! mad ! fakesink
+
+Then i do a seek (via an index), unlink the fakesinks, and link the
+outputs to the encode part of the pipeline so it looks like this:
+
+  ./gst-launch { avimux name=mux ! filesink location=/tmp/test.avi }
+filesrc location=/local/aleader/original/Star_Wars_1.mpg ! mpegdemux
+name=demux demux.video_00 ! { queue name=vdemux_q ! mpeg2dec ! xvidenc
+! queue name=vmux_q ! mux.video_00 } demux.audio_00 ! mad ! lame !
+queue name=audio_q ! mux.audio_00
+
+This is where the caps nego fails because half of the pipeline is
+PAUSED and half is NULL.  For example, the sink pad of xvidenc can do
+caps nego but the src pad can't because that part of the pipeline is
+in the NULL state.  So when the sink pad does nego, it works but then
+it tries to setup the src pad at the same time so it actually REJECTs
+and the scheduler gives up.  So we need to nego each pad independently
+and return DELAYED if the peer pad isn't ready yet.
+
+(i make an assumption here that caps nego isn't possible when both
+elements are in the NULL state.  Maybe we should blame the scheduler
+instead of the caps nego.)
+





More information about the Gstreamer-bugs mailing list