stream time vs. running time in level/spectrum messages

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

stream time vs. running time in level/spectrum messages

Stefan Sauer
hi,

wim, in
http://webcvs.freedesktop.org/gstreamer/gst-plugins-good/gst/level/gstlevel.c?r1=1.74&r2=1.75
you changed "endtime" to be returned as stream time instead of running time.
Comment was that this is what the application wants. Either is miss something or
don't agree here. I update level meters on the screen with the details from
GstLevel. For a long time I just ignored the endtime and triggered resraws
immediately. For a pipeline like src ! level ! fx1 ! level ! fx2 ! level ! sink
it had the consequense the meters where not in sync. Now I tried to sync them:

GstClockTime endtime;

if(gst_structure_get_clock_time (structure, "endtime", &endtime)) {
   gconstpointer *params=g_new(gconstpointer,2);
   GstClockID clock_id;
   GstClockTime waittime;
   GstClockTime basetime =
     gst_element_get_base_time(GST_ELEMENT(GST_MESSAGE_SRC(message)));

   /* this only work for the first loop :/
    * root cause is that level/spectrum send endtime as stream_time and not
    * as running_time
    */
   waittime=basetime+endtime;

   GST_DEBUG("target %"GST_TIME_FORMAT" %"GST_TIME_FORMAT,
     GST_TIME_ARGS(endtime),GST_TIME_ARGS(waittime));

   params[0]=(gpointer)self;
   params[1]=(gpointer)gst_message_copy(message);
   clock_id=gst_clock_new_single_shot_id(self->priv->clock,waittime);
   gst_clock_id_wait_async
     (clock_id,on_delayed_song_level_change,(gpointer)params);
   gst_clock_id_unref(clock_id);
}

Problem here is that I want to sync with the pipeline clock. Without having
access to accum filed in segment I can see how to convert the stream_time to
running_time. A segment-query unfortunately does not return the accum field :/

Any ideas? Should we change level back to return running_time or is there a way
I can convert from the application.

And bt.w spectrum still uses gst_segment_to_running_time(), so we shoudl atleast
make it consistent.


Stefan

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel