Does not all the demuxers (avidemux/qtdemux/flvdemux/matroskademux) support&nbsp; GST_SEEK_FLAG_SKIP flag?<br><br>or must do anything in the decoder plugin ?<br>I notice that&nbsp; in the mpeg2dec plugin of gst-plugins-ugly,<br>it register the set_index and get_index callback such as :<br>___________________________________________________<br>static void<br>gst_mpeg2dec_class_init (GstMpeg2decClass * klass)<br>{<br>......<br>&nbsp; gstelement_class-&gt;set_index = gst_mpeg2dec_set_index;<br>&nbsp; gstelement_class-&gt;get_index = gst_mpeg2dec_get_index;<br>}<br>__________________________________________________<br>set_index and get_index will support fast playback rate of fast forward ?<br><br>I register the get_index and set _index in my decoder plugin,<br>and do index_seek function in the case GST_EVENT_SEEK of <br>XXX_src_event callback , such as<br>____________________________________<br>static gboolean gst_myviddec_src_event(GstPad *pad, GstEvent *event)<br>{&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; ......<br>&nbsp;&nbsp;&nbsp; switch(GST_EVENT_TYPE(event))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case GST_EVENT_SEEK:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gst_event_ref (event);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!(res = gst_pad_push_event (viddec-&gt;sinkpad, event))) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (viddec-&gt;index)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res = index_seek (pad, event);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gst_event_unref (event);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = gst_pad_event_default(pad, event);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return result;<br>}<br>____________________________________<br>But it can't implement the ""res = index_seek (pad, event);<br><br>Did i make any error code ?<br><div></div><br><pre><br>At&nbsp;2011-02-14&nbsp;18:35:43£¬"Luis&nbsp;de&nbsp;Bethencourt"&nbsp;&lt;luis@debethencourt.com&gt;&nbsp;wrote:

&gt;2011/2/14&nbsp;zwresh&nbsp;&lt;zwresh@126.com&gt;:
&gt;&gt;&nbsp;I&nbsp;used&nbsp;the&nbsp;&nbsp;qtdemux&nbsp;&nbsp;&amp;&nbsp;matroskademux&nbsp;&nbsp;plugin&nbsp;&nbsp;for&nbsp;mp4&nbsp;&amp;&nbsp;mkv&nbsp;format
&gt;&gt;&nbsp;container,
&gt;&gt;&nbsp;&nbsp;but&nbsp;i&nbsp;used&nbsp;&nbsp;my&nbsp;decoder&nbsp;&nbsp;plugin&nbsp;&nbsp;for&nbsp;h264&nbsp;and&nbsp;mpeg4asp&nbsp;codec.
&gt;&gt;&nbsp;maybe&nbsp;my&nbsp;decoder&nbsp;plugin&nbsp;is&nbsp;not&nbsp;correct&nbsp;for&nbsp;trick&nbsp;play&nbsp;£¨X2,X4,X8,X16£©?
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;&nbsp;whether&nbsp;dropping&nbsp;the&nbsp;SKIP&nbsp;flag&nbsp;or&nbsp;not,&nbsp;the&nbsp;result&nbsp;is&nbsp;the&nbsp;same&nbsp;.
&gt;&gt;&nbsp;it&nbsp;does't&nbsp;change&nbsp;rate&nbsp;but&nbsp;only&nbsp;change&nbsp;the&nbsp;seek&nbsp;position.
&gt;&gt;
&gt;&gt;
&gt;&gt;&nbsp;I&nbsp;tried&nbsp;gst_element_seek_simple&nbsp;function,&nbsp;it&nbsp;could&nbsp;seek&nbsp;but&nbsp;how&nbsp;to&nbsp;change
&gt;&gt;&nbsp;rate&nbsp;by&nbsp;param&nbsp;?
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;
&gt;So&nbsp;does&nbsp;the&nbsp;change&nbsp;of&nbsp;rate&nbsp;work&nbsp;with&nbsp;qtdemux/mkvdemux?&nbsp;It&nbsp;should.
&gt;
&gt;You&nbsp;are&nbsp;right,&nbsp;I&nbsp;thought&nbsp;the&nbsp;simple_seek&nbsp;also&nbsp;had&nbsp;the&nbsp;rate&nbsp;flag&nbsp;but&nbsp;it
&gt;doesn't.&nbsp;So&nbsp;you&nbsp;need&nbsp;to&nbsp;use&nbsp;gst_element_seek&nbsp;()
&gt;My&nbsp;bad.
&gt;
&gt;Luis
&gt;
&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;&nbsp;At&nbsp;2011-02-14&nbsp;02:30:25£¬"Luis&nbsp;de&nbsp;Bethencourt"&nbsp;&lt;luis@debethencourt.com&gt;&nbsp;wrote:
&gt;&gt;
&gt;&gt;&gt;zwresh,
&gt;&gt;&gt;
&gt;&gt;&gt;What&nbsp;is&nbsp;the&nbsp;content&nbsp;format/codec?
&gt;&gt;&gt;Try&nbsp;the&nbsp;simple&nbsp;seek&nbsp;I&nbsp;mentioned&nbsp;and&nbsp;dropping&nbsp;the&nbsp;SKIP&nbsp;flag&nbsp;as&nbsp;Tim
&gt;&gt;&gt;suggested&nbsp;and&nbsp;let&nbsp;us&nbsp;know&nbsp;how&nbsp;it&nbsp;goes.
&gt;&gt;&gt;
&gt;&gt;&gt;Luis
&gt;&gt;&gt;
&gt;&gt;&gt;2011/2/12&nbsp;zwresh&nbsp;&lt;zwresh@126.com&gt;:
&gt;&gt;&gt;&gt;&nbsp;It&nbsp;can&nbsp;seek&nbsp;&nbsp;the&nbsp;right&nbsp;position&nbsp;and&nbsp;playback,&nbsp;but&nbsp;can&nbsp;not&nbsp;change&nbsp;the
&gt;&gt;&gt;&gt;&nbsp;playback&nbsp;rate.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&nbsp;At&nbsp;2011-02-11&nbsp;21:03:11£¬"Luis&nbsp;de&nbsp;Bethencourt"&nbsp;&lt;luis@debethencourt.com&gt;&nbsp;wrote:
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;2011/2/11&nbsp;zwresh&nbsp;&lt;zwresh@126.com&gt;:
&gt;&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;Anybody&nbsp;know&nbsp;how&nbsp;to&nbsp;&nbsp;fast&nbsp;forward&nbsp;&nbsp;play&nbsp;&nbsp;such&nbsp;as&nbsp;by&nbsp;X2,&nbsp;X4&nbsp;,X8,X16&nbsp;?
&gt;&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;I&nbsp;tried&nbsp;the&nbsp;avidemux/qtdemux/flvdemux/matroskademux&nbsp;demuxer&nbsp;,
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;and&nbsp;used&nbsp;&nbsp;the&nbsp;decoder&nbsp;of&nbsp;mine.
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;And&nbsp;must&nbsp;i&nbsp;do&nbsp;somthing&nbsp;in&nbsp;my&nbsp;decoder&nbsp;plugin&nbsp;?
&gt;&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;Following&nbsp;is&nbsp;the&nbsp;code&nbsp;snippet&nbsp;of&nbsp;app&nbsp;which&nbsp;I&nbsp;have:
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;--------------------------------------------------------------------------------------
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;(int)gst_element_query_position(pipeline,&amp;format,&amp;pos_cur);
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos_seek&nbsp;=&nbsp;pos_cur&nbsp;+&nbsp;(&nbsp;time_seek&nbsp;*&nbsp;GST_SECOND&nbsp;);
&gt;&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gst_element_seek&nbsp;(pipeline,
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;nbsp&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.0,
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GST_FORMAT_TIME,
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GST_SEEK_FLAG_FLUSH&nbsp;|&nbsp;GST_SEEK_FLAG_KEY_UNIT
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;|&nbsp;GST_SEEK_FLAG_SKIP,
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GST_SEEK_TYPE_SET,
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos_seek,
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;nbs&nbsp;p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GST_SEEK_TYPE_NONE,
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GST_CLOCK_TIME_NONE);
&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;------------------------------------------------------------------------------------------
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;So&nbsp;is&nbsp;it&nbsp;not&nbsp;accepting&nbsp;the&nbsp;change&nbsp;in&nbsp;the&nbsp;playback&nbsp;rate?&nbsp;or&nbsp;is&nbsp;it&nbsp;not&nbsp;seeking?
&gt;&gt;&gt;&gt;&gt;Have&nbsp;you&nbsp;tried&nbsp;using&nbsp;gst_element_seek_simple&nbsp;()&nbsp;?
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;Luis
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;_______________________________________________
&gt;gstreamer-devel&nbsp;mailing&nbsp;list
&gt;gstreamer-devel@lists.freedesktop.org
&gt;http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
</pre><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>