[gst-devel] problem to seek mp3

Jyoti jyoti.d at allaboutif.com
Thu Nov 19 12:08:54 CET 2009


may be you should check the return value of

gst_element_seek (play,
                   1.0,
                   GST_FORMAT_TIME,
                   GST_SEEK_FLAG_FLUSH,
                   GST_SEEK_TYPE_SET,
                   fpos,
                   GST_SEEK_TYPE_NONE, 0);

only if its true means the seeking is possible else not.


On Wed, Nov 4, 2009 at 10:37 PM, vincent meserette <vmeserette at gmail.com>wrote:

>
> Hi all,
>
> I am a newbie in the use of gstreamer, so I hope you will excuse the
> simplicity of my question.
> I wrote a little program to play wav and mp3 files with the playbin
> element,
> and a function to seek on this element.
> For wav files it works perfectly, but it doesn't seek on mp3 files, even if
> I haven't error message from the gst_element_seek function.
> Does anyone know from where could come the problem ?
>
> Here is the construction of my pipeline :
>
>     gst_init (0, 0);
>     GMainLoop *loop = g_main_loop_new (NULL, FALSE);
>
>    // -------------- play with playbin --------------------
>    GstElement *play = gst_element_factory_make ("playbin", "play");
>    std::string uri="file:///"+pFileName;
>    std::cout << "playing " << uri <<  std::endl;
>    g_object_set (G_OBJECT (play), "uri", uri.c_str(), NULL);
>
>    GstElement *sink = gst_element_factory_make ("alsasink","sink");
>    g_object_set (G_OBJECT (play),"audio-sink", sink, NULL);
>
>    GstBus*bus = gst_pipeline_get_bus (GST_PIPELINE (play));
>    gst_bus_add_watch (bus, (GstBusFunc) bus_call, thisApp);
>    gst_bus_add_signal_watch (bus);
>    gst_object_unref (GST_OBJECT (bus));
>    gst_element_set_state (play, GST_STATE_PLAYING);
>    g_main_loop_run (loop);
>
> And here the seeking function :
>
>
> void GstPlayer::goToPosition(const float &position)
> {
>  gint64 fpos=position*GST_SECOND;
>  GstQuery *query;
>  if (!play)
>  {
>    std::cout << "play is not construct "<< std::endl ;
>    return;
>  }
>  /**
>  * Determine whether we can seek.
>  **/
>  query = gst_query_new_seeking (GST_FORMAT_TIME);
>  while (!gst_element_query (play, query))
>  {
>    std::cout << "not OK to seek"<< std::endl ;
>  }
>
>  GstState state, pending;
>
>  /**
>    * Store old state.
>    **/
>  gst_element_get_state ( play,
>                          &state,
>                          &pending,
>                          0);
>  if (pending)
>          state = pending;
>
>  /**
>    * State to PAUSED.
>    **/
>  gst_element_set_state (play, GST_STATE_PAUSED);
>
>  /**
>    * Perform the seek.
>    **/
>  std::cout << "seeking to " << position << " s" <<  std::endl;
>  gst_element_seek (play,
>                    1.0,
>                    GST_FORMAT_TIME,
>                    GST_SEEK_FLAG_FLUSH,
>                    GST_SEEK_TYPE_SET,
>                    fpos,
>                    GST_SEEK_TYPE_NONE, 0);
>  /**
>    * Restore state.
>    **/
>  gst_element_set_state (play, state);
>
> Thanks in advance
>
> Vincent
> --
> View this message in context:
> http://old.nabble.com/problem-to-seek-mp3-tp26196581p26196581.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
>
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20091119/2751e6a9/attachment.htm>


More information about the gstreamer-devel mailing list