I pinpointed the source of the problem: for some mysterious reason, gstreamer is not able to play MP4 video files with an audio rate of 48000Hz:<br><br> File     :  23 MB (23 MB),  duration: 0:00:59,  type: DSH,  1 audio stream(s),  quality: 98 %<br>
 Video :  18.13 MB,  2578 Kbps,  29.970 fps,  1280*768 (16:9),  YV12 = Unknown,    Supported<br> Audio :  5.40 MB,  768 Kbps,  24000 Hz,  2 channels,  0xFF = Unknown,    Unsupported<br><br>The good news is if I encode the file and change just the rate to 44100Hz, it works!<br>
<br>I tried to fix it by adding a capsfilter to the pipeline to change the audio sample rate but it didn&#39;t worked. I guess the problem is located before this stage in the pipeline.<br><br>Should I file a bug?<br>--<br>
Karl Phillip<br><br><div class="gmail_quote">On Tue, Dec 20, 2011 at 6:23 PM, Karl Phillip <span dir="ltr">&lt;<a href="mailto:maxphil@gmail.com">maxphil@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
There has been some developments. It seems the issue is related to the type of video that is being played (maybe the resolution size, or something like that). <br><br>The video I was trying to play is a MP4 file, and then I found that AVIs can be played, so I thought the problems were MP4 files.<br>

<br>On Windows, AVICodec (tool) reports them as:<br><br>* bad.mp4<br> File     :  22 MB (22 MB),  duration: 0:00:50,  type: DSH,  1 audio stream(s),  quality: 98 %<br> Video :  13.04 MB,  2188 Kbps,  29.970 fps,  1280*768 (16:9),  YV12 = Unknown,    Supported<br>

 Audio :  9.15 MB,  1536 Kbps,  48000 Hz,  2 channels,  0xFF = Unknown,    Unsupported<br><br>* good.avi:<br> File     :  12.81 MB (12.81 MB),  duration: 0:00:59,  type: AVI,  1 audio stream(s),  quality: 69 %<br> Video :  11.90 MB,  1692 Kbps,  25.0 fps,  720*320 (2.21:1),  XVID = XVID Mpeg-4,    Supported<br>

 Audio :  921 KB,  128 Kbps,  44100 Hz,  2 channels,  0x55 = Lame MP3,    Supported<br><br>One of the interesting things we&#39;ve done is convert bad.mp4 to the same format used by good.avi, and the resulting video also didn&#39;t worked. So my theory that the problem was in MP4 files went down the hole, check it out:<br>

<br>* converted:<br> File     :  5.14 MB (5.14 MB),  duration: 0:00:50,  type: AVI,  1 audio stream(s),  quality: 70 %<br> Video :  3.80 MB,  638 Kbps,  29.970 fps,  1280*768 (16:9),  XVID = XVID Mpeg-4,    Supported<br>
 Audio :  1.33 MB,  224 Kbps,  48000 Hz,  2 channels,  0x55 = Lame MP3,    Supported<br>
<br>The converted video is virtually in the same format as good.avi and it still doesn&#39;t work.<br><br>In case you are interested, the following command shows the pipeline used by my application and it successfully plays MP4 files on Linux:<br>

<br>gst-launch filesrc location=bad.mp4 ! decodebin name=decoder decoder. ! audioconvert ! audioresample ! autoaudiosink decoder. ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb ! ximagesink<br><br>I think the next commands are the Windows equivalent of that. I just changed the video sink element at the end but none seems to work:<br>

<br>gst-launch.exe filesrc location=bad.mp4 ! decodebin name=decoder decoder. ! audioconvert ! audioresample ! directsoundsink decoder. ! ffmpegcolorspace ! capsfilter caps=&quot;video/x-raw-rgb&quot; ! dshowvideosink<br>

<br>0:00:00.109375000  3360   00332E00 ERROR           GST_PIPELINE grammar.tab.c:713:gst_parse_perform_link: could not link capsfilter0 to dshowvideosink0<br>WARNING: erroneous pipeline: could not link capsfilter0 to dshowvideosink0<br>

<br><br>gst-launch.exe filesrc location=bad.mp4 ! decodebin name=decoder 
decoder. ! audioconvert ! audioresample ! directsoundsink decoder. ! 
ffmpegcolorspace ! capsfilter caps=&quot;video/x-raw-rgb&quot; ! sdlvideosink<br>0:00:00.109375000   240   00332E00 ERROR           GST_PIPELINE grammar.tab.c:713:gst_parse_perform_link: could not link capsfilter0 to sdlvideosink0<br>

WARNING: erroneous pipeline: could not link capsfilter0 to sdlvideosink0<br><br>and finally trying with autovideosink, it looks like it will play the file but it does nothing:<br><br>C:\ossbuild\Build\Windows\Win32\Release\bin&gt;gst-launch.exe filesrc location=bad.mp4 ! decodebin name=decoder decoder. ! audioconvert ! audioresample ! directsoundsink decoder. ! ffmpegcolorspace ! capsfilter caps=&quot;video/x-raw-rgb&quot; ! autovideosink<br>

Setting pipeline to PAUSED ...<br>Pipeline is PREROLLING ...<br><br><br>I could use some help from the experts.<br><br>Thank you all,<span class="HOEnZb"><font color="#888888"><br>--<br>Karl Phillip</font></span><div class="HOEnZb">
<div class="h5"><br><br><br><br><div class="gmail_quote">On Tue, Dec 20, 2011 at 12:01 PM, Karl Phillip <span dir="ltr">&lt;<a href="mailto:maxphil@gmail.com" target="_blank">maxphil@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I wrote a Video Player for Linux that uses QtGstreamer. It works beatifully! Now that I&#39;ve successfully compiled and tested gstreamer/qtgstreamer for Windows I decided it was time to compile my Video Player for Windows as well, and so it was done, flawlessly. <br>


<br>However, when my application is executed audio/video is not being played. <br><br>I know that onNewDecodedPad() is being triggered for &quot;audio/x-raw-int&quot; and &quot;video/x-raw-rgb&quot;, and I&#39;m also certain that all the pipeline setup is good since it works on Linux.<br>


<br>Here is what is happening: my VideoPlayer class inherits from QGst::Utils::ApplicationSink , and I noticed that newBuffer() is not being called when the pipeline is set to QGst::StatePlaying. That&#39;s odd, right? <br>


<br>So I addSignalWatch() to the pipeline bus and further testes revelead that after everything is properly configured and loaded, i.e. after onNewDecodedPad() is executed for both audio/video streams saying that everything is good to go, setting the pipeline to:<br>


    pipeline-&gt;setState(QGst::StatePlaying);<br><br>doesn&#39;t trigger a QGst::MessageStateChanged event, nor a QGst::MessageError event. I don&#39;t know what&#39;s going on since I can see the very same code working on Linux.<br>


<br>What could be causing this? I have added debugs for virtually every QtGstreamer call that is being done, so if anything had failed during the setup I would know.<br><br>Thanks guys,<span><font color="#888888"><br>
--<br>Karl Phillip<br>
</font></span></blockquote></div><br>
</div></div></blockquote></div><br>