What happens to just-requested tee srcpad in PLAYING pipeline?
Andrey Utkin
andrey.krieger.utkin at gmail.com
Fri Jan 10 08:15:32 PST 2014
Currently i'm having problem with pipeline going back to PLAYING state
because of source element task paused and not going back to work.
I guess that's what really happens is that we attach a new branch (not
necessarily to tee directly linked with source element, it also can be
linked through a chain of other tees and queues).
Newly-linked pipeline part affects state of elements in all pipeline,
automatically.
Source element task pushes data though each tee srcpad. With the pad
which is linked to fakesink everything is ok, but some pad is in fact
in "flushing" state (i guess because pipeline part behind it is
currently being reconfigured due to linking of new elements), which
makes source element task to get paused. Unfortunately, setting
pipeline to PLAYING state, even repeatedly, does not help.
It should be very hard to block all pushing tasks in the pipeline to
add new pipeline branch safely, because my pipelines have a lot of
queue elements.
Below is a listing of last lines from source task thread, with GST_DEBUG=5.
Any ideas how to overcome this? Either to avoid stopping source task,
or to make it get up again.
Inserting queue between source element and first tee doesn't change anything.
526371:0:00:30.499016461 25153 0x2007720 DEBUG
tee gsttee.c:692:gst_tee_chain:<tee> received buffer 0x7f82400e9aa0
526372:0:00:30.499031399 25153 0x2007720 DEBUG
GST_PADS gstpad.c:3435:check_sticky:<tee:src_1> pushing all sticky
events
526373:0:00:30.499039195 25153 0x2007720 DEBUG
GST_EVENT gstpad.c:5000:gst_pad_send_event_unchecked:<src_consumer_queue_0_1389364907:sink>
have event type stream-start event: 0x7f8270004580, time
99:99:99.999999999, seq-num 6687, GstEventStreamStart,
stream-id=(string)ad6d0a94c53421c76250b6849d33e68653e1c47e86feefde5502b0cd645e55a9,
flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)2;
526374:0:00:30.499059280 25153 0x2007720 INFO
GST_EVENT gstpad.c:5098:gst_pad_send_event_unchecked:<src_consumer_queue_0_1389364907:sink>
Received event on flushing pad. Discarding
526375:0:00:30.499071258 25153 0x2007720 DEBUG
GST_PADS gstpad.c:3414:push_sticky:<tee:src_1> result flushing, mark
pending events
526376:0:00:30.499080220 25153 0x2007720 DEBUG
tee gsttee.c:677:gst_tee_handle_data:<tee> received error flushing
526377:0:00:30.499086833 25153 0x2007720 DEBUG
tee gsttee.c:696:gst_tee_chain:<tee> handled buffer flushing
526378:0:00:30.499093216 25153 0x2007720 INFO
basesrc gstbasesrc.c:2791:gst_base_src_loop:<source> pausing after
gst_pad_push() = flushing
526379:0:00:30.499099809 25153 0x2007720 DEBUG
basesrc gstbasesrc.c:2832:gst_base_src_loop:<source> pausing task,
reason flushing
526380:0:00:30.499106167 25153 0x2007720 DEBUG
GST_PADS gstpad.c:5477:gst_pad_pause_task:<source:src> pause task
526381:0:00:30.499112486 25153 0x2007720 DEBUG
task gsttask.c:662:gst_task_set_state:<source:src> Changing task
0x200fea0 to state 2
526382:0:00:30.499120763 25153 0x2007720 INFO
task gsttask.c:300:gst_task_func:<source:src> Task going to paused
--
Andrey Utkin
More information about the gstreamer-devel
mailing list