<br><br>
<div><span class="gmail_quote">On 2/29/08, <b class="gmail_sendername">Florent</b> &lt;<a href="mailto:fthiery@gmail.com">fthiery@gmail.com</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi<br><br>&gt; I want to find out an element which works like filesink but need to change<br>&gt; file location (file name) frequently. I tried filesink firstly, but it can only setlocation before the specified<br>
&gt; file opened and can not setlocation to it after it got EOS.<br><br>AFAIK, this is a known limitation. The only workaround i could found<br>sofar is blocking the pads of the filesink, switching it to a<br>fakesink, creating a new filesink with new location and linking it<br>
back. However, this worked only on simple pipelines (videotestsrc,<br>single video pipeline), not complex ones (muxed ones).<br><br>I&#39;d be glad to know more as well. What&#39;s the proper way to emit an<br>arbitrary EOS signal ?<br>
<br>FLo<br></blockquote></div>
<div>&nbsp;</div>
<div>What my solution is:</div>
<div>
<p>gst_element_set_state (gstFileSink, GST_STATE_NULL);<br>if(gst_element_get_state(gstFileSink, NULL, NULL, -1) == GST_STATE_NULL)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_object_set( G_OBJECT(gstFileSink), &quot;location&quot;, pcURI, NULL);</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pFileSinkPad =&nbsp; gst_element_get_pad (gstFileSink, &quot;sink&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gstBaseSink = GST_BASE_SINK_CAST(gstFileSink);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; baseSinkPriv = (_MMCamcorderBaseSinkPrivCast* )gstBaseSink-&gt;priv;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; baseSinkPriv-&gt;m_ReceivedEOS = FALSE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gst_pad_set_active(pFileSinkPad, TRUE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gst_element_set_state (gstFileSink, GST_STATE_PLAYING);</p>
<p>}</p>
<p>Here I cast the filesink to basesink to access its member. Really, it is very bad solution I think.<br clear="all"><br>-- <br>Best Regards<br>Edward </p></div>