[gst-devel] 'segment->format == format' assertion failing in gstsegment when playing WM content

Wim Taymans wim.taymans at gmail.com
Tue May 6 16:33:26 CEST 2008


On Tue, 2008-05-06 at 09:05 -0500, Andreas Schuler wrote:

You need to force fakesrc into producing time-based data (it produces
byte based formats by default). Unfortunatly this is not possible yet.

Wim

> I have compared log entries like the following to the samples I am
> feeding the pipeline:
> 
> "dshowaudiodec : chain (size 768)=> pts 0:00:00.128000000 stop
> 0:00:00.320000000"
> 
> This line is produced by the following statement (from
> gstdshowaudiodec.c):
> 
> GST_CAT_DEBUG_OBJECT (dshowaudiodec_debug, adec, "chain (size %d)=>
> pts %"
>       GST_TIME_FORMAT " stop %" GST_TIME_FORMAT,
>       GST_BUFFER_SIZE (buffer), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP
> (buffer)),
>       GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer) +
>           GST_BUFFER_DURATION (buffer)));
> 
> Those timestamps are matching from what I can tell and therefore look
> ok to me.
> 
> 
> 
> It is possible that I am not setting all necessary data on the
> GstBuffer in the fakesrc. The following fields get set at the moment:
>       * GST_BUFFER_DATA
>       * GST_BUFFER_SIZE
>       * GST_BUFFER_TIMESTAMP
>       * GST_BUFFER_DURATION
>       * GST_BUFFER_FLAG_DISCONT (if present in source sample)
>       * GST_BUFFER_FLAG_PREROLL (if present in source sample)
> 
> It is also worth mentioning that my fakesrc has the "is-live" property
> set to TRUE.
> 
> Thanks,
> 
> Andreas
> 
> 
> On Tue, May 6, 2008 at 1:43 AM, Felipe Contreras
> <felipe.contreras at gmail.com> wrote:
>         
>         On Tue, May 6, 2008 at 1:41 AM, Andreas Schuler
>         <andreas at neokast.com> wrote:
>         > Hi all,
>         >
>         > I am having some trouble playing back Windows Media content.
>         >
>         > The setup is somewhat unique but necessary for my
>         application:
>         >
>         > 2 fakesrc components, which are injecting encoded audio and
>         video data
>         > Sources are connected to capsfilters, on which I am setting
>         the correct
>         > input caps (see below)
>         > Caps filters are connected to a multiqueue
>         > Queue is connected to two decoding bins
>         > Standard audio and video rendering tails (i.e. convert
>         filters, rendering
>         > sinks etc.) are connected to decoding bin source pads This
>         setup actually
>         > works fine for XVID/MP3 encoded content but I didn't have
>         any luck getting
>         > it to play with WM content. The caps I have for audio and
>         video are as
>         > follows:
>         >
>         > audio/x-wma, channels=(int)2, rate=(int)32000,
>         wmaversion=(int)2,
>         > bitrate=(int)32000, codec_data=(buffer)008800001f0000000000,
>         > block_align=(int)768, depth=(int)16
>         >  video/x-wmv, width=(int)720, height=(int)496,
>         framerate=(fraction)24/1,
>         > wmvversion=(int)2, codec_data=(buffer)baf8ad00,
>         format=(fourcc)WMV2
>         >
>         > I have the same content in a regular WMV file, which is
>         playing back fine
>         > when using the playbin. I verified the caps with that setup
>         (the only
>         > difference appears to be the order of some of the fields and
>         the video
>         > framerate [the actual value is 23.97fps]):
>         >
>         > audio/x-wma, wmaversion=(int)2, bitrate=(int)32000,
>         depth=(int)16,
>         > rate=(int)32000, channels=(int)2, block_align=(int)768,
>         > codec_data=(buffer)008800001f0000000000
>         > video/x-wmv, wmvversion=(int)2, framerate=(fraction)25/1,
>         width=(int)720,
>         > height=(int)496, codec_data=(buffer)baf8ad00,
>         format=(fourcc)WMV2
>         >
>         >
>         >
>         > When trying to play the content using the setup mention
>         above I get a lot of
>         > the following messages from gstsegment.c (702):
>         >
>         > CRITICAL **: file E:\devel-release\src_releases\gstreamer
>         \gst\gstsegment.c:
>         > line 702: assertion `segment->format == format' failed
>         >
>         > Enabling the debug output reveals the following from the
>         dshow audio
>         > decoder:
>         >
>         > dshowaudiodec : received new segment from 0:00:00.000000000
>         to
>         > 99:99:99.999999999
>         > dshowaudiodec : chain (size 768)=> pts 0:00:00.000000000
>         stop
>         > 0:00:00.192000000
>         >  dshowaudiodec : this buffer has a DISCONT flag
>         (0:00:00.000000000),
>         > flushing
>         > dshowaudiodec : chain (size 768)=> pts 0:00:00.128000000
>         stop
>         > 0:00:00.320000000
>         > dshowaudiodec : buffer is out of segment, start
>         0:00:00.128000000 stop
>         > 0:00:00.256000000
>         >  dshowaudiodec : buffer is out of segment, start
>         0:00:00.256000000 stop
>         > 0:00:00.320000000
>         > dshowaudiodec : chain (size 768)=> pts 0:00:00.320000000
>         stop
>         > 0:00:00.512000000
>         > dshowaudiodec : buffer is out of segment, start
>         0:00:00.320000000 stop
>         > 0:00:00.448000000
>         >  dshowaudiodec : buffer is out of segment, start
>         0:00:00.448000000 stop
>         > 0:00:00.512000000
>         > dshowaudiodec : chain (size 768)=> pts 0:00:00.512000000
>         stop
>         > 0:00:00.704000000
>         > dshowaudiodec : buffer is out of segment, start
>         0:00:00.512000000 stop
>         > 0:00:00.640000000
>         >  dshowaudiodec : buffer is out of segment, start
>         0:00:00.640000000 stop
>         > 0:00:00.704000000
>         > dshowaudiodec : chain (size 768)=> pts 0:00:00.704000000
>         stop
>         > 0:00:00.896000000
>         > dshowaudiodec : buffer is out of segment, start
>         0:00:00.704000000 stop
>         > 0:00:00.832000000
>         >  dshowaudiodec : buffer is out of segment, start
>         0:00:00.832000000 stop
>         > 0:00:00.896000000
>         >
>         > The video decoder is showing a similar picture:
>         >
>         > dshowvideodec : new segment received =>
>         start=0:00:00.000000000
>         > stop=99:99:99.999999999
>         >  dshowvideodec : chain (size 1749)=> pts 0:00:00.009000000
>         stop
>         > 0:00:00.010000000
>         > dshowvideodec : this buffer has a DISCONT flag
>         (0:00:00.009000000), flushing
>         > dshowvideodec : buffer is out of segment, start
>         0:00:00.009000000 stop
>         > 0:00:00.010000000
>         >  dshowvideodec : chain (size 2972)=> pts 0:00:02.411000000
>         stop
>         > 0:00:02.412000000
>         > dshowvideodec : buffer is out of segment, start
>         0:00:02.411000000 stop
>         > 0:00:02.412000000
>         > dshowvideodec : chain (size 3735)=> pts 0:00:02.445000000
>         stop
>         > 0:00:02.446000000
>         >  dshowvideodec : buffer is out of segment, start
>         0:00:02.445000000 stop
>         > 0:00:02.446000000
>         > dshowvideodec : chain (size 3500)=> pts 0:00:02.478000000
>         stop
>         > 0:00:02.479000000
>         > dshowvideodec : buffer is out of segment, start
>         0:00:02.478000000 stop
>         > 0:00:02.479000000
>         >  dshowvideodec : chain (size 5141)=> pts 0:00:02.545000000
>         stop
>         > 0:00:02.546000000
>         > dshowvideodec : buffer is out of segment, start
>         0:00:02.545000000 stop
>         > 0:00:02.546000000
>         > dshowvideodec : chain (size 7849)=> pts 0:00:02.578000000
>         stop
>         > 0:00:02.579000000
>         >  dshowvideodec : buffer is out of segment, start
>         0:00:02.578000000 stop
>         > 0:00:02.579000000
>         > dshowvideodec : chain (size 5101)=> pts 0:00:02.611000000
>         stop
>         > 0:00:02.612000000
>         > dshowvideodec : buffer is out of segment, start
>         0:00:02.611000000 stop
>         > 0:00:02.612000000
>         >  dshowvideodec : chain (size 7712)=> pts 0:00:02.645000000
>         stop
>         > 0:00:02.646000000
>         > dshowvideodec : buffer is out of segment, start
>         0:00:02.645000000 stop
>         > 0:00:02.646000000
>         >
>         >
>         > I understand that the problem appears to be that the
>         "format" in GstSegment
>         > is not of type GST_FORMAT_TIME when "gst_segment_clip" is
>         called in
>         > gstdshowaudiocodec.c. The question is why. Can anyone point
>         me in the right
>         > direction on this one?
>         
>         
>         What about the timestamps? Are those ok?
>         
>         --
>         Felipe Contreras
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
> Don't miss this year's exciting event. There's still time to save $100. 
> Use priority code J8TL2D2. 
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> _______________________________________________ gstreamer-devel mailing list gstreamer-devel at lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gstreamer-devel





More information about the gstreamer-devel mailing list