I&#39;ve coded up a C# application to mimic the following pipeline (broken into separate lines for readability here):<div><br></div><div>gstrtpbin name=rtpbin </div><div>filesrc location=&quot;&lt;a file path&gt;&quot; ! decodebin2 name=decoder </div>
<div>decoder.src0 ! queue ! ffmpegcolorspace ! x264enc threads=0 ! queue ! rtph264pay ! rtpbin.send_rtp_sink_0</div><div>rtpbin.send_rtp_src_0 ! udpsink host=127.0.0.1 port=8444</div><div>decoder.src1 ! queue ! audioconvert ! faac ! queue ! rtpmp4apay ! rtpbin.send_rtp_sink_1</div>
<div>rtpbin.send_rtp_src_1 ! udpsink host=127.0.0.1 port=8002 </div><div><br></div><div>gstrtpbin has a PadAdded handler to add the udpsink.</div><div>decodebin2 has an OnNewDecodedPad handler to add audio and video elements as detected.</div>
<div><br></div><div>If I construct the above pipeline in gst-launch, it works and streams and playable with VLC via a SDP file.</div><div><br></div><div>However, through the C# application where elements in the pipeline are constructed and linked dynamically and with properties set like above, the pipeline will not go into PLAY state.  It remains in PAUSED state and returns ASYNC in the GetState call.   One scenario where I can get the pipeline to reach PLAY state is to not link up any audio and set decodebin2&#39;s async-handling to true.  </div>
<div><br></div><div>I know gst-launch performs additional &quot;magic&quot; under the covers and I need a hint as to what that magic might be.  Been going over the documents and examples and can&#39;t find that missing link.</div>
<div><br></div><div>Using Winbuild v0.10.6</div><div><br></div><div>Thanks,</div><div>Sam</div>