[gst-devel] getting an accurate frame number from pipeline
mapping at sheerman-chase.org.uk
mapping at sheerman-chase.org.uk
Mon Jan 12 17:50:19 CET 2009
Hi,
Thanks again people for help with gdkpixbufsink. I am now trying to
get an accurate video frame number from a pipeline. I can change the
format I am requesting but only GST_FORMAT_TIME and GST_FORMAT_PERCENT
work as expected. When I ask for GST_FORMAT_BUFFERS, the query returns
with the same result as GST_FORMAT_PERCENT.
int video_get_pos(GstFormat fmt, const char *text)
{
GstQuery *query;
gboolean res;
query = gst_query_new_position (fmt);
res = gst_element_query (pipeline, query);
if (res) {
gint64 pos;
gst_query_parse_position (query, &fmt, &pos);
printf ("position %s \t= %lld\n", text, (pos));
}
else {
printf ("position query failed...\n");
}
gst_query_unref (query);
return 0;
}
And I am querying with different formats like this:
video_get_pos(GST_FORMAT_DEFAULT,"default");
video_get_pos(GST_FORMAT_TIME,"time ");
video_get_pos(GST_FORMAT_BUFFERS,"buffers");
video_get_pos(GST_FORMAT_PERCENT,"percent");
I get a result along these lines:
position default = 11040000000
position time = 10882214000
position buffers = 11040000000
position percent = 11040000000
Is this a good approach to get an accurate frame number? Or do I have
to work around and get the time in nanoseconds and multiply it by the
frame rate?
I also have problems seeking using frame numbers. Is gstreamer trying
to tell me something?
full code:
http://www.sheerman-chase.org.uk/temp/gst-player-pixel2009-01-12d.tar.gz
Thanks,
Tim
More information about the gstreamer-devel
mailing list