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>