[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