<font class="Apple-style-span" face="arial, helvetica, sans-serif">Hi,</font><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">I&#39;m having some trouble connecting decodebin2 to autovideosink in order to play mp4 video. So far, using the command line, I have managed to play mp4 video by creating the following pipe:</font><div>
<font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">gst-launch filesrc location=&quot;file.mp4&quot; ! decodebin2 ! autovideosink</font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">I now want to create the same pipeline but in C. Noticing that decodebin2 has a dynamic pad, I&#39;ve attached a callback to the &quot;pad-added&quot; signal in which I then try to link the pads of decodebin2 and autovideosink - however with no success. </font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">I then investigated the caps and noticed that the caps of decodebin2 are: video/quicktime, variant=(string)iso which isn&#39;t a cap of autovideosink which would explain the GST_PAD_LINK_NOFORMAT error I am seeing. </font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">How is it possible that the pipeline on the command line is able to play the video but my program seems to provide incompatible type? Is there something else that needs to be done?</font></div>
<div><br></div></div><div>I&#39;d really appreciate any help, been trying to get my head round this for a couple of days now!</div><div><br></div><div>Thanks.</div><div><br></div><div><br></div><div>PS my callback looks like this (I am also using Qt libraries - qDebug simply writes to terminal like printf):</div>
<div><br></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style="color: rgb(128, 128, 0); ">static</span><span style="color: rgb(192, 192, 192); "> </span><span style="color: rgb(128, 128, 0); ">void</span><span style="color: rgb(192, 192, 192); "> </span>on_pad_added<span style="color: rgb(50, 50, 50); ">(</span><span style="color: rgb(0, 125, 182); ">GstElement</span><span style="color: rgb(192, 192, 192); "> </span><span style="color: rgb(50, 50, 50); ">*</span><span style="color: rgb(50, 50, 50); ">element</span><span style="color: rgb(50, 50, 50); ">,</span><span style="color: rgb(192, 192, 192); "> </span><span style="color: rgb(0, 125, 182); ">GstPad</span><span style="color: rgb(192, 192, 192); "> </span><span style="color: rgb(50, 50, 50); ">*</span><span style="color: rgb(50, 50, 50); ">srcpad</span><span style="color: rgb(50, 50, 50); ">,</span><span style="color: rgb(192, 192, 192); "> </span><span style="color: rgb(0, 125, 182); ">gpointer</span><span style="color: rgb(192, 192, 192); "> </span><span style="color: rgb(50, 50, 50); ">data</span><span style="color: rgb(50, 50, 50); ">)</span>
</font><pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#323232;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">{</font></span></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;on_pad_added&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;"><br>
</span></font></pre><pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#007db6;">GstElement</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">*</span><span style=" color:#323232;">videosink</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">=</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">(</span><span style=" color:#007db6;">GstElement</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">*)</span><span style=" color:#323232;">data</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#007db6;">GstPad</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">*</span><span style=" color:#323232;">sinkpad</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">=</span><span style=" color:#c0c0c0;"> </span>gst_element_get_static_pad<span style=" color:#323232;">(</span><span style=" color:#323232;">videosink</span><span style=" color:#323232;">,</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">&quot;sink&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;"><br>
</span></font></pre><pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;src</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">caps</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">are</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">%s&quot;</span><span style=" color:#323232;">,</span><span style=" color:#c0c0c0;"> </span>gst_caps_to_string<span style=" color:#323232;">(</span>gst_pad_get_caps<span style=" color:#323232;">(</span><span style=" color:#323232;">srcpad</span><span style=" color:#323232;">)));</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;sink</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">caps</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">are</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">%s&quot;</span><span style=" color:#323232;">,</span><span style=" color:#c0c0c0;"> </span>gst_caps_to_string<span style=" color:#323232;">(</span>gst_pad_get_caps<span style=" color:#323232;">(</span><span style=" color:#323232;">sinkpad</span><span style=" color:#323232;">)));</span></font></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#323232;"><br>
</span></font></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">if</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">(!</span>gst_pad_can_link<span style=" color:#323232;">(</span><span style=" color:#323232;">srcpad</span><span style=" color:#323232;">,</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">sinkpad</span><span style=" color:#323232;">)) // can link fails</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;Cannot</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">link</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">these</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008d00;">pads&quot;</span><span style=" color:#323232;">);</span></font></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#323232;"><br>
</span></font></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">switch</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">(</span>gst_pad_link<span style=" color:#323232;">(</span><span style=" color:#323232;">srcpad</span><span style=" color:#323232;">,</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">sinkpad</span><span style=" color:#323232;">))</span><span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">{</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">case</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GST_PAD_LINK_OK</span><span style=" color:#323232;">:</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;1&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span><span style=" color:#808000;">break</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">case</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GST_PAD_LINK_WRONG_HIERARCHY</span><span style=" color:#323232;">:</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;2&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span><span style=" color:#808000;">break</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">case</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GST_PAD_LINK_WAS_LINKED</span><span style=" color:#323232;">:</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;3&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span><span style=" color:#808000;">break</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">case</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GST_PAD_LINK_WRONG_DIRECTION</span><span style=" color:#323232;">:</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;4&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span><span style=" color:#808000;">break</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">case</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GST_PAD_LINK_NOFORMAT</span><span style=" color:#323232;">: // reason for link error</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;5&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span><span style=" color:#808000;">break</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">case</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GST_PAD_LINK_NOSCHED</span><span style=" color:#323232;">:</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;6&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span><span style=" color:#808000;">break</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">case</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GST_PAD_LINK_REFUSED</span><span style=" color:#323232;">:</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;7&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span><span style=" color:#808000;">break</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">default</span><span style=" color:#323232;">:</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span>qDebug<span style=" color:#323232;">(</span><span style=" color:#008d00;">&quot;8&quot;</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">        </span><span style=" color:#808000;">break</span><span style=" color:#323232;">;</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span><span style=" color:#323232;">}</span></font></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#323232;"><br>
</span></font></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span style=" color:#c0c0c0;">    </span>gst_object_unref<span style=" color:#c0c0c0;"> </span><span style=" color:#323232;">(</span><span style=" color:#323232;">sinkpad</span><span style=" color:#323232;">);</span></font></pre>

<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#323232;"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">}</font></span></pre>
</div><div><br></div><div><br></div>