[gst-devel] Sink does not reach STATE_PLAYING

Dirk Meyer dischi at freevo.org
Tue Feb 13 16:17:22 CET 2007


Hi,

The final goal is to include gstreamer in the recording part of Freevo
(http://www.freevo.org). To test it I'm playing with some parts of
gstreamer if it can do what we need.

Im trying to create something that can convert a mpeg ts from a dvb
card into mpeg4 in a matroska container. For some reason it is only
working sometimes. I have a python script and I was happy that it
works. Later I tried a different ts recording and it does not work
with that file. Sometimes the sink writes some bytes and just stopps,
sometimes the filesize will keep 0 byte.

To keep it as simple as it could get I wrote the encoder again in
C. The source can be found at http://www.sachmittel.de/encoder.c (I
know that there are memory leaks). The strange part now is that I
can't neven link the audio encoder (AAC) with matroska anymore. If I
do I get "faac gstfaac.c:641:gst_faac_chain:<aenc> error: failed to
negotiate MPEG/AAC format with next element".

Ignoring this and copy the audio as it is to matroska also doesn't
work. 

| gstelement.c:1969:<pipeline> committing state from NULL to READY, pending PLAYING

So far so good. Everything is READY.

| gstelement.c:1978:<pipeline> continue state change READY to PAUSED, final PLAYING
| gstbin.c:1936:<pipeline> child 'sink' is changing state asynchronously

First of all: why asynchronously? I also have other examples where I
tried using gstreamer and it is always the sink that does not get into
the needed states. If I add a queue before the sink, it will still
only be the sink.

| gstelement.c:1995:<muxer> completed state change
| gstbin.c:1931:<pipeline> child 'muxer' changed state to 3(PAUSED) successfully
| gstelement.c:1995:<vqueue> completed state change
| gstbin.c:1931:<pipeline> child 'vqueue' changed state to 3(PAUSED) successfully
| gstelement.c:1995:<aqueue> completed state change
| gstbin.c:1931:<pipeline> child 'aqueue' changed state to 3(PAUSED) successfully
| gstfilesrc.c:906:gst_file_src_start:<source> opening file zdf-old.ts
| gstfilesrc.c:906:gst_file_src_start:<source> opening file zdf-old.ts
| gstelement.c:1995:<demuxer> completed state change
| gstbin.c:1931:<pipeline> child 'demuxer' changed state to 3(PAUSED) successfully
| gstelement.c:1995:<source> completed state change
| gstbin.c:1931:<pipeline> child 'source' changed state to 3(PAUSED) successfully

That's it (regarding state changes). The sink claims to be
asynchronously changing the state, but does not reach it. This means
the whole pipeline will never be ready. 

Please help, what am I missing?


Dirk

-- 
Real_men_don't_need_spacebars.




More information about the gstreamer-devel mailing list