Hi ,
       I have few questions . 

       Why are you using navtest plugin to perform PLAY/PAUSE/SEEK ? because that can be done using your application also.

   And what is the implementation of navtest i mean what exactly you are doing in that plugin  ? 




On Sat, May 30, 2009 at 6:57 PM, Suresh Choudary <sikkim.suresh@gmail.com> wrote:
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

 


------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel




--
Regards,

Sudarshan Bisht