Hi all,<br><br>I am having some trouble playing back Windows Media content.<br><br>The setup is somewhat unique but necessary for my application:<br><ul><li>2 fakesrc components, which are injecting encoded audio and video data</li>
<li>Sources are connected to capsfilters, on which I am setting the correct input caps (see below)<br></li><li>Caps filters are connected to a multiqueue</li><li>Queue is connected to two decoding bins</li><li>Standard audio and video rendering tails (i.e. convert filters, rendering sinks etc.) are connected to decoding bin source pads</li>
</ul>This setup actually works fine for XVID/MP3 encoded content but I didn&#39;t have any luck getting it to play with WM content. The caps I have for audio and video are as follows:<br><br>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<br>
video/x-wmv, width=(int)720, height=(int)496, framerate=(fraction)24/1, wmvversion=(int)2, codec_data=(buffer)baf8ad00, format=(fourcc)WMV2<br><br>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]):<br>
<br>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<br>video/x-wmv, wmvversion=(int)2, framerate=(fraction)25/1, width=(int)720, height=(int)496, codec_data=(buffer)baf8ad00, format=(fourcc)WMV2<br>
<br><br><br>When trying to play the content using the setup mention above I get a lot of the following messages from gstsegment.c (702):<br><br>CRITICAL **: file E:\devel-release\src_releases\gstreamer\gst\gstsegment.c: line 702: assertion `segment-&gt;format == format&#39; failed<br>
<br>Enabling the debug output reveals the following from the dshow audio decoder:<br><br>dshowaudiodec : received new segment from 0:00:00.000000000 to 99:99:99.999999999<br>dshowaudiodec : chain (size 768)=&gt; pts 0:00:00.000000000 stop 0:00:00.192000000<br>
dshowaudiodec : this buffer has a DISCONT flag (0:00:00.000000000), flushing<br>dshowaudiodec : chain (size 768)=&gt; pts 0:00:00.128000000 stop 0:00:00.320000000<br>dshowaudiodec : buffer is out of segment, start 0:00:00.128000000 stop 0:00:00.256000000<br>
dshowaudiodec : buffer is out of segment, start 0:00:00.256000000 stop 0:00:00.320000000<br>dshowaudiodec : chain (size 768)=&gt; pts 0:00:00.320000000 stop 0:00:00.512000000<br>dshowaudiodec : buffer is out of segment, start 0:00:00.320000000 stop 0:00:00.448000000<br>
dshowaudiodec : buffer is out of segment, start 0:00:00.448000000 stop 0:00:00.512000000<br>dshowaudiodec : chain (size 768)=&gt; pts 0:00:00.512000000 stop 0:00:00.704000000<br>dshowaudiodec : buffer is out of segment, start 0:00:00.512000000 stop 0:00:00.640000000<br>
dshowaudiodec : buffer is out of segment, start 0:00:00.640000000 stop 0:00:00.704000000<br>dshowaudiodec : chain (size 768)=&gt; pts 0:00:00.704000000 stop 0:00:00.896000000<br>dshowaudiodec : buffer is out of segment, start 0:00:00.704000000 stop 0:00:00.832000000<br>
dshowaudiodec : buffer is out of segment, start 0:00:00.832000000 stop 0:00:00.896000000<br><br>The video decoder is showing a similar picture:<br><br>dshowvideodec : new segment received =&gt; start=0:00:00.000000000 stop=99:99:99.999999999<br>
dshowvideodec : chain (size 1749)=&gt; pts 0:00:00.009000000 stop 0:00:00.010000000<br>dshowvideodec : this buffer has a DISCONT flag (0:00:00.009000000), flushing<br>dshowvideodec : buffer is out of segment, start 0:00:00.009000000 stop 0:00:00.010000000<br>
dshowvideodec : chain (size 2972)=&gt; pts 0:00:02.411000000 stop 0:00:02.412000000<br>dshowvideodec : buffer is out of segment, start 0:00:02.411000000 stop 0:00:02.412000000<br>dshowvideodec : chain (size 3735)=&gt; pts 0:00:02.445000000 stop 0:00:02.446000000<br>
dshowvideodec : buffer is out of segment, start 0:00:02.445000000 stop 0:00:02.446000000<br>dshowvideodec : chain (size 3500)=&gt; pts 0:00:02.478000000 stop 0:00:02.479000000<br>dshowvideodec : buffer is out of segment, start 0:00:02.478000000 stop 0:00:02.479000000<br>
dshowvideodec : chain (size 5141)=&gt; pts 0:00:02.545000000 stop 0:00:02.546000000<br>dshowvideodec : buffer is out of segment, start 0:00:02.545000000 stop 0:00:02.546000000<br>dshowvideodec : chain (size 7849)=&gt; pts 0:00:02.578000000 stop 0:00:02.579000000<br>
dshowvideodec : buffer is out of segment, start 0:00:02.578000000 stop 0:00:02.579000000<br>dshowvideodec : chain (size 5101)=&gt; pts 0:00:02.611000000 stop 0:00:02.612000000<br>dshowvideodec : buffer is out of segment, start 0:00:02.611000000 stop 0:00:02.612000000<br>
dshowvideodec : chain (size 7712)=&gt; pts 0:00:02.645000000 stop 0:00:02.646000000<br>dshowvideodec : buffer is out of segment, start 0:00:02.645000000 stop 0:00:02.646000000<br><br><br>I understand that the problem appears to be that the &quot;format&quot; in GstSegment is not of type GST_FORMAT_TIME when &quot;gst_segment_clip&quot; is called in gstdshowaudiocodec.c. The question is why. Can anyone point me in the right direction on this one?<br>
<br>Thanks,<br><br>Andreas<br clear="all"><br>