[gst-embedded] PLAy->PAUSE Issue with alsasink
Suresh Choudary
sikkim.suresh at gmail.com
Sat May 30 06:27:44 PDT 2009
Dear All,
I am using the following pipeline with gstreamer version 0.10.22 and latest
plugins.
gst-launch filesrc location=/home/testh263.3gp ! qtdemux name=demux
demux.audio_00 ! queue ! amrdecoder ! navtest ! alsasink demux.video ! queue
! h263decoder ! v4l2sink
where navtest is a simple plugin which allows user to PLAY/PAUSE/SEEK.
Overall the pipeline is as follows from application point of view.
|----------> queue ---> amrdecoder
--->alsasink
filesrc--->qtdemux ----|
|----------->queue---->h263decoder--->v4l2sink
Where I am using the open source alsasink and custom decoders. When I try to
set the pipeline to PAUSED state, some times (1 out of 10 times) all the
components can transition to PAUSED state, but alsasink sends a ASYNC
notification, but never commits to paused state. (As the part log below
shows the same.I have enabled only basesink logs)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0:02:07.538391114 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:2911:gst_base_sink_chain_unlocked:<avsysvideosink0>
got times start: 0:00:23.648648648, end: 0:00:23.690357023
0:02:07.538726807 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:1534:gst_base_sink_get_sync_times:<avsysvideosink0>
got times start: 0:00:23.648648648, stop: 0:00:23.690357023, do_sync 1
0:02:07.538970948 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:1984:gst_base_sink_do_sync:<avsysvideosink0>
possibly waiting for clock to reach 0:00:23.648648648, adjusted
0:00:23.648648648
0:02:07.590026856 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:4099:gst_base_sink_change_state:<avsysvideosink0>
PLAYING to PAUSED
0:02:07.611236573 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:2846:gst_base_sink_needs_preroll:<avsysvideosink0>
have_preroll: 0, EOS: 0 => needs preroll: 1
0:02:07.611511231 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:4131:gst_base_sink_change_state:<avsysvideosink0>
PLAYING to PAUSED, we are not prerolled
0:02:07.611694336 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:4135:gst_base_sink_change_state:<avsysvideosink0>
doing async state change
0:02:07.612030030 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:4144:gst_base_sink_change_state:<avsysvideosink0>
rendered: 13, dropped: 53
[gst_avsysvideosink_change_state:835]GST_STATE_CHANGE_PLAYING_TO_PAUSED
0:02:07.612487793 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:1990:gst_base_sink_do_sync:<avsysvideosink0>
clock returned 2
0:02:07.612731934 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:2003:gst_base_sink_do_sync:<avsysvideosink0>
unscheduled, waiting some more
0:02:07.612915039 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:1943:gst_base_sink_do_sync:<avsysvideosink0>
prerolling object 0xe2ad8
0:02:07.613098145 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:1357:gst_base_sink_commit_state:<avsysvideosink0>
commiting state to PAUSED
0:02:07.613281250 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:1382:gst_base_sink_commit_state:<avsysvideosink0>
posting PAUSED state change message
0:02:07.614196778 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:1388:gst_base_sink_commit_state:<avsysvideosink0>
posting async-done message
0:02:07.614532471 865 0xcfdd0 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:1732:gst_base_sink_wait_preroll:<avsysvideosink0>
waiting in preroll for flush or PLAYING
*0:02:07.620910645 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:4099:gst_base_sink_change_state:<alsasink0>
PLAYING to PAUSED*
*0:02:07.621154785 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:2846:gst_base_sink_needs_preroll:<alsasink0>
have_preroll: 0, EOS: 0 => needs preroll: 1*
*0:02:07.653625489 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:4131:gst_base_sink_change_state:<alsasink0>
PLAYING to PAUSED, we are not prerolled*
*0:02:07.653900147 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:4135:gst_base_sink_change_state:<alsasink0>
doing async state change*
0:02:07.654205323 865 0xcfe80 DEBUG basesink
/home/root/x2//middleware/multimedia-framework/media-service/gstreamer/gstreamer-0.10.22/./libs/gst/base/gstbasesink.c:4144:gst_base_sink_change_state:<alsasink0>
rendered: 157, dropped: 0
PAUSED
But after this the audio sink (alsasink) can not commit the state to pause.
I understand this happens because no more buffers are pushed by amrdecoder
to alsasink but somehow the qtdemux is also blocked and sends no data to
amrdecoder which may cause the sink to get one buffer and get prerolled and
commit the state.
I want to enquire if anyone of you have faced similar issue, and how to go
about this issue. Please help me resolve this issue.
BR,
Suresh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-embedded/attachments/20090530/2a5f196b/attachment.htm>
More information about the Gstreamer-embedded
mailing list